oracle结构梳理----checkpoint——启动与关闭

----SCN:system_change_number

select dbms_flashback.get_system_change_number from dual;

select dbms_flashback.get_system_change_number scnno,

       SCN_TO_TIMESTAMP(dbms_flashback.get_system_change_number) time

  from dual;---时间与SCN对应的关系

select current_scn from v$database; 

select timestamp_to_scn(SYSTIMESTAMPas scn from dual;---转换

--在控制文件中 

1SYSTEM CHECKPOINT SCN 

select checkpoint_change# from v$database; --1054470322784保存在控制文件中

2Datafile checkpoint SCN 

select file#,name,checkpoint_change# from v$datafile; 

3Stop SCN(END SCN

select file#,name,last_change# from v$datafile; 

alter tablespace users read only

alter tablespace users read write;

--一个在数据文件头内

4) StartSCN 

SELECT FILE#, NAME, checkpoint_change#, STATUS, TABLESPACE_NAME FROM V$DATAFILE_HEADER;

 

 系统检查点和数据文件检查点不一致时,则会启动SMON进程,进行数据库恢复.

 stop scn 是最后一次修改scn

select checkpoint_change#,last_change# from v$datafile; 

shutdown abort

startup mount ----会在last_change中记录SCN

 

SQLshutdown abort

ORACLE 例程已经关闭。

SQL> startup mount

ORACLE 例程已经启动。

 

Total System Global Area 1703624704 bytes

Fixed Size                  2255864 bytes

Variable Size            1275069448 bytes

Database Buffers          419430400 bytes

Redo Buffers                6868992 bytes

数据库装载完毕。

SQLselect checkpoint_change#,last_change# from v$datafile;

 

CHECKPOINT_CHANGE#    LAST_CHANGE#

------------------ ---------------

     1054471237178   1054471237178

     1054471237178   1054471237178

     1054471237178   1054471237178

     1054471237178   1054471237178

     1054471237178   1054471237178

 

SQLselect checkpoint_change# from v$database;

 

CHECKPOINT_CHANGE#

------------------

     1054471237178

 

SQLalter database open;

 

数据库已更改。

 

SQLselect checkpoint_change# from v$database;

 

CHECKPOINT_CHANGE#

------------------

     1054471237181

 

SQLselect checkpoint_change#,last_change# from v$datafile;

 

CHECKPOINT_CHANGE#    LAST_CHANGE#

------------------ ---------------

     1054471237181

     1054471237181

     1054471237181

     1054471237181

     1054471237181

 

SQLalter system checkpoint

  2  /

 

系统已更改。

 

SQLshutdown abort

ORACLE 例程已经关闭。

SQL> startup mount

ORACLE 例程已经启动。

 

Total System Global Area 1703624704 bytes

Fixed Size                  2255864 bytes

Variable Size            1275069448 bytes

Database Buffers          419430400 bytes

Redo Buffers                6868992 bytes

数据库装载完毕。

SQLselect checkpoint_change#,last_change# from v$datafile;

 

CHECKPOINT_CHANGE#    LAST_CHANGE#

------------------ ---------------

     1054471237709

     1054471237709

     1054471237709

     1054471237709

     1054471237709

 

SQLselect checkpoint_change# from v$database;

 

CHECKPOINT_CHANGE#

------------------

     1054471237709

 

----------------------------------------------------------------------------

SQLalter system checkpoint;

系统已更改。

SQLshutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup mount

ORACLE 例程已经启动。

 

Total System Global Area 1703624704 bytes

Fixed Size                  2255864 bytes

Variable Size            1275069448 bytes

Database Buffers          419430400 bytes

Redo Buffers                6868992 bytes

数据库装载完毕。

SQLselect checkpoint_change#,last_change# from v$datafile;

 

CHECKPOINT_CHANGE#    LAST_CHANGE#

------------------ ---------------

     1054471258835   1054471258835

     1054471258835   1054471258835

     1054471258835   1054471258835

     1054471258835   1054471258835

     1054471258835   1054471258835

 

SQLselect checkpoint_change# from v$database;

 

CHECKPOINT_CHANGE#

------------------

     1054471258835

-----------------所以当数据库是正常关闭时,系统scn和数据文件中的scn会保持一致,但是如果是不正常关闭,而且在数据库open中有队数据文件进行写,那么会导致系统scn和文件scn

-----------不一致,从而在再次open数据库是会触发smon进程进行前滚在回滚,使得数据库恢复成一致状态。

 

--检查点的分类

--第一种分法 

 --1.database checkpoint,数据库级的检查点会触发的情况:

1)alter system checkpoint

2alter system switch logfile

3alter database begin backup

4正常关闭实例shutdown(immediate,transcationalnormal

 --2.表空间和数据文件检查点:会出发的情况:

1alter tablespace ... read only 

2alter datafile ....  shrink 

3alter tablespace .... offline

4alter tablespace....  begin backup  

--第二种分类方法 

1完全检查点 :手动触发的,和关闭数据库时候发生的均为完全检查点

2增量检查点 

--完全检查点

1alter system checkpoint   

2》正常关闭shutdown(immediate,transcationalnormal

 

 

------checkpiont的几个概念

----RBARedo Byte Address) 

当一个checkpoint事件发生的时候,checkpoint进程会记录下当时所写的重做日志块的地址即RBA,此时记录的RBA被称为checkpoint RBA。  

Low RBA(LRBAHigh RBA(HRBA) 

RBA就是重做日志块(redo log block)的地址,相当与数据文件中的ROWID,通过这个地址来定位重做日志块。 

RBA由三个部分组成: 

1.日志文件序列号(4字节)

2.日志文件块编号(4字节)

3.重做日志记录在日志块中的起始偏移字节数(2字节) 

LRBA

数据缓存(buffer cache)中一个脏块第一次被更新的时候产生的重做日志记录在重做日志文件中所对应的位置就称为LRBA。 

HRBA

数据缓存(buffer cache)中一个脏块最近一次(最后一次)被更新的时候产生的重做日志记录在重做日志文件中所对应的位置就称为HRBA。  

HRBA 最后一次变脏 

LRBA 第一次变脏  

--Buffer checkpoint QueuesBCQ) 

前滚到最后的状态,回滚到最后一次提交的状态 

Oracle将所有在数据缓存中被修改的脏块按照LRBA顺序的组成一个checkpoint队列,这个队列主要记录了buffer cache第一次发生变化的时间顺序

 

HRBA 

--checkpoint RBA ( Target Rba )

当一个checkpoint事件发生的时候,checkpoint进程会记录下当时所写的重做日志块的地址即RBA,此时记录的RBA被称为checkpoint RBA。 

--====================数据库启动与关闭

---

11步是NOMOUNT,读取初始化参数(SPFILEPFILE),初始化在SPFILEPFILE里设置的内存及进程,并知道了控制文件的地址。

spfile

pfile

22MOUNT就是要从控制文件读取物理文件的结构

3但是MOUNT后的数据文件,控制文件也许数据不一致,有可能是异常关闭的,所以后续要做一个一致性检查,这属于第3,数据库OPEN

实例恢复:mount之后先前滚后回滚在打开数据库

介质恢复:需要DBA手动干预

 

alter  database backup  controlfile to trace as 'D:\control_file.txt';---将控制文件备份成文本格式

---启动方式

STARTUP FORCE

相当于SHUTDOWN ABORT + STARTUP

STARTUP RESTRICT 受限模式

select logins from v$instance;

STARTUP RECOVER--该命令相当于STARTUP MOUNT + RECOVER DATABASE

---关闭方式

1. shutdown abort

---no allow new connections,no wait until current sessions end,no until current transactiona end ,no force a checkpoint and close files

2. shutdown immediate---不用等待事务完成,也不用等待用户退出,

? 检查点,写脏数据到数据文件,

? 回滚没有提交的事务

? 释放相关资源

? 不需要做实例恢复

---no allow new connections,no wait until current sessions end,no until current transactiona end , yes force a checkpoint and close files

3. shutdown transactional

---no allow new connections,yes wait until current sessions end,yes until current transactiona end ,yes force a checkpoint and close files

4.  shutdown normal

---no allow new connections,no wait until current sessions end,yes until current transactiona end ,yes force a checkpoint and close files

 

 

shutdown immediate

startup nomount---后台进程服务器进程都已启动,会启动instance和后台进程

alter database mount;---mount只是get the name of the datafiles and redo log files.

alter database open;----此时才能查看数据库中的文件

 

startup restrict

select * from user_sys_privs where PRIVILEGE='RESTRICTED SESSION';

alter system disable restricted session;

select logins from v$instance;

alter system enable restricted session----可以将数据库改成受限模式

 

 

 

--How a Database Is Mounted

The instance mounts a database to associate the database with that instance. 

To mount the databasethe instance finds the database control files and opens them. 

Control files are specified in the CONTROL_FILES initialization parameter in the parameter file used 

to start the instance. Oracle then reads the control files to get the names of the database's datafiles and redo log files.'

---Restricted Mode of Instance Startupaaa

You can start an instance in restricted mode (or later alter an existing instance to be in restricted mode). 

This restricts connections to only those users who have been granted the RESTRICTED SESSION system privilege.

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30018455/viewspace-1415560/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30018455/viewspace-1415560/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值