四个SCN 和 using backup controlfile
上一篇 / 下一篇 2007-10-26 00:00:00 / 个人分类:Oracle
From: http://logzgh.itpub.net/post/3185/42513
scn号与oracle数据库恢复过程有着密切的关系,只有很好地理解了这层关系,才能深刻地理解恢复的原理,从而才能很好地解决这方面的问题。
一。SCN与CHECKPOINTITPUB个人空间@uQv!w,S0yFc
CKPT进程在checkpoint发生时,将当时的SCN号写入数据文件头和控制文件,同时通知DBWR进程将数据块写到ITPUB个人空间BX'y/i0?\
数据文件。
PV'~
fm0CKPT进程也会在控制文件中记录RBA(redo block address),以标志Recovery需要从日志中哪个地方开始。
与checkpoint相关的SCN号有四个,其中三个存在控制文件中,一个存放在数据文件头中。
'gAjlh5q7{"R0这四个分别是:
S$Eu1C3z3b01.System Checkpoint SCNITPUB个人空间OTj
a,x'a0wnn!W
当checkpoint完成后,ORACLE将System Checkpoint SCN号存放在控制文件中。
;o/[]'Xw%R+O0我们可以通过下面SQL语句查询:ITPUB个人空间ow@
e(r1H
select checkpoint_change# from v$database;
2.Datafile Checkpoint SCNITPUB个人空间
T}M$v{^;S6E
当checkpoint完成后,ORACLE将Datafile Checkpoint SCN号存放在控制文件中。
yQ)s)k%UE0我们可以通过下面SQL语句查询所有数据文件的Datafile Checkpoinnt SCN号。ITPUB个人空间"cI2q&mv
select name,checkpoint_change# from v$datafile;
3.Start SCN号
$N;L"I8?~0ORACLE将Start SCN号存放在数据文件头中。
cZPrh0这个SCN用于检查数据库启动过程是否需要做media recovery.ITPUB个人空间Sm)e+h1s!O$m
我们可以通过以下SQL语句查询:ITPUB个人空间_W)}Cn6E~D
select name,checkpoint_change# from v$datafile_header;
4.End SCN号ITPUB个人空间KMiCqv
ORACLE将End SCN号存放在控制文件中。
{I,k.rF p-a.c0这个SCN号用于检查数据库启动过程是否需要做instance recovery.ITPUB个人空间wF7shh;cK@t1K
我们可以通过以下SQL语句查询:ITPUB个人空间a&qoxih
select name,last_change# from v$datafile;
在数据库正常运行的情况下,对可读写的,online的数据文件,该SCN号为NULL.
W"AQB E-?0
ITPUB个人空间5^&L8wjkl{
二。SCN号与数据库启动
VV\
e~*F*^0在数据库启动过程中,当System Checkpoint SCN、Datafile Checkpoint SCN和
HLz6X)XOd ~F0Start SCN号都相同时,数据库可以正常启动,不需要做media recovery.三者当中有ITPUB个人空间-M-Jo
@N^'y
一个不同时,则需要做media recovery.ITPUB个人空间B!m+| BYS
T,E
ITPUB个人空间0N;P\r|@eLcS
如果在启动的过程中,End SCN号为NULL,则需要做instance recovery.ITPUB个人空间`${ dF8YH
~Y_
ORACLE在启动过程中首先检查是否需要media recovery,然后再检查是否需要instance recovery.
三。SCN号与数据库关闭
y;U/g/uj"zc e0如果数据库的正常关闭的话,将会触发一个checkpoint,同时将数据文件的END SCN号设置为相应
/j+_?N_t)aj4j0数据文件的Start SCN号。ITPUB个人空间/M?FMk'tY!}m)_Km O)F
\_@v H8MN#Y0当数据库启动时,发现它们是一致的,则不需要做instance recovery。在数据库正常启动后,ORACLE
!}MD%Y9^"?[A0y]A0会将END SCN号设置为NULL.
如果数据库异常关闭的话,则END SCN号将为NULL.
四。为什么需要System checkpoint SCN号与Datafile Checkpoint SCN号
lr.~M4~0为什么ORACLE会在控制文件中记录System checkpoint SCN号的同时,还需要为每个数据文件记录ITPUB个人空间 l ?9yV
~)]
Datafile Checkpoint SCN号?
原因有二:
e])g7T EP:{a;Eg01.对只读表空间,其数据文件的Datafile Checkpoint SCN、Start SCN和END SCN号均相同。
Qu$CGp3JlCo:Q0这三个SCN在表空间处于只读期间都将被冻结。