欢迎投稿

今日深度:

实例恢复与Oracle的SCN,实例oraclescn

实例恢复与Oracle的SCN,实例oraclescn


简单理解oracle的SCN就是自己的时间功能,好比linux系统自己的时间一样,oracle它也有自己的一套时间。

在你干净的关闭数据库时shutdown immediate或者使用alter system checkpoint都会把SCN的值写入4个位置,其中有3个位于controlfile内,还有1个位于datafile header内

controlfile里面的三个SCN分别是:1、system checkpoint SCN  2、datafile checkpoint SCN  3、stop SCN

---system checkpoint SCN 查询

SQL>select checkpoint_change# from v$database;

---datafile checkpoint SCN查询

SQL>select name,checkpoint_change#  from v$datafile where name like '%user%';

---stop SCN查询

SQL>select name,last_change# from  from v$datafile where name like '%user%';

其中这个stop SCN在数据库正常使用的时候是NUll值

datafile header里面的SCN是:start SCN

---start SCN 查询

SQL>select name,checkpoint_change#  from v$datafile_header were name like '%user%';

1、 Clean shutdown

       clean shutdown 时,checkpoint会进行,并且此时datafilestop scn和控制文件里的start scn会相同。 等到open数据库时,Oracle检查datafile header中的start scn和存于control file中的datafile的scn是否相同, 如果相同,接着检查datafile header的start scn和存于control file中的stop scn是否相同,如果仍然相同,数据库就会正常开启,否则就需要recovery。

       等到数据库开启后,储存在control file中的stop scn就会恢复为NULL,此时表示datafile是open在正常模式下了。

 

2、 非正常shutdown

       如果不正常SHUTDOWN (shutdown abort),则mount数据库后,会发现stop scn并不是等于其它位置的scn 而是等于NULL这表示Oracle在shutdown时没有进行checkpoint,下次开机必须进行instance  crash recovery(实例恢复)

 

注意一点:

       (1)启动数据库时,如果发现STOP SCN = NULL,表示需要进行instancecrash recovery

       (2)启动数据库时,如果发现有datafile header的START SCN 不等于储存于CONTROLFILE的DATAFILE SCN,表示需要进行Media recovery




oracle终止SCN可以

oracle正常运行时数据文件终止SCN为NULL或者无穷大

如果数据库正常关闭状态下“各个”数据文件终止SCN (存在控制文件)与“相对应数”据文件头SCN(存在数据文件头) 一致则不需要恢复
 

oracle数据文件为何要有SCN

启动scn
Oracle把这个检查点的scn存储在每个数据文件的文件头中,这个值称为启动scn,因为它用于在数据库实例启动时,
检查是否需要执行数据库恢复。
select name,checkpoint_change# from v$datafile_header
终止scn
每个数据文件的终止scn都存储在控制文件中。
select name,last_change# from v$datafile
这个SCN号用于检查数据库启动过程是否需要做instance recovery。数据库文件状态改变的情况 才更改
在数据库正常运行的情况下,对可读写的,online的数据文件,该SCN号为NULL
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/3025.html NewsArticle 实例恢复与Oracle的SCN,实例oraclescn 简单理解oracle的SCN就是自己的时间功能,好比linux系统自己的时间一样,oracle它也有自己的一套时间。 在你干净的关闭数据库时shutdown immediate或者使用...
评论暂时关闭