Oracle SCN

SCN (System Change Number )系统改变号

一.SCN是Oracle中非常重要的时间机制。

SQL> select timestamp_to_scn(sysdate) from dual;

TIMESTAMP_TO_SCN(SYSDATE)
&VCL#GVkW0x26912144-------------------------
&S#I&SIQ/Y \tP}26912144                   920939

SQL> select scn_to_timestamp(920000) from dual;

SCN_TO_TIMESTAMP(920000)ITPUB个人空间u8WA(jGoXx+n5`
---------------------------------------------------------------------------ITPUB个人空间^'sgngj ^0p+v8G
07-FEB-10 01.06.11.000000000 AM

//SCN和timestamp之间可以相互转换。

二.SCN常用在数据库启动,读一致性,数据的恢复,flashback等环境中。SCN号首先会在内存中累加,直到执行CHECKPOINT时,一次写入SCN号。

三.SCN的常见类型:

SQL> select checkpoint_change# from v$database;//检查点SCN,每执行一次CHECKPOINT,由CKPT进程来进行更新,该SCN是保存在控制文件中

CHECKPOINT_CHANGE#ITPUB个人空间XU7R:Pd.Y1Q!w
------------------ITPUB个人空间,la+b!C bDc!B
            920459

SQL> select current_scn from v$database;//当前最新的SCN,不断的更新,当前最新的SCN号,Oracle10g中,每隔3秒SCN号就会更新,SCN号只能增大

CURRENT_SCNITPUB个人空间1x&cs5@S6Jy
-----------
1]wA&L-U h.o%`26912144     920782

SQL> select checkpoint_change# from v$datafile;//数据文件SCN,每个数据文件都有一个数据文件SCN,每执行一次CHECKPOINT,由CKPT进程来进行更新,该SCN是保存在控制文件中

CHECKPOINT_CHANGE#
4v o"C+nu/V ^K9^26912144------------------ITPUB个人空间9k,M1U2Lm~3T
            920459
)m;H0lB[ q;bQS26912144            920459
}'[:\Buj C&fP R26912144            920459
#n$G!D E,pstc"j3E+h26912144            920459
|!ehG$E#kg26912144            920459
"^PvGV5_(k u5e26912144            920459ITPUB个人空间\.P!C$HC+|%]L
            920459
Y,YWnTc&~H2u26912144            920459ITPUB个人空间8Wt mR5?+J4ik3B
            920459
8^zECoTOn*Yd/da7x26912144            920459
Xj{*[ HOa+W26912144            920459

36 rows selected.

SQL>  select checkpoint_change# from v$datafile_header;//启动SCN,每个数据文件都有一个启动SCN,每执行一次CHECKPOINT,由CKPT进程来进行更新,该SCN保存在数据文件的头文件中

CHECKPOINT_CHANGE#
Nh D&cz26912144------------------ITPUB个人空间s$[IY9Mn M8b
            920459ITPUB个人空间_iT3~P,}3A:@
            920459ITPUB个人空间(A"B5A k-E
            920459
h#OEvX.t26912144            920459
5DE B8e:u4U+tY0P26912144            920459
,O|a"o t1a o(X26912144            920459
/k;D,`HDWIF1hY26912144            920459
IRf^:Kaj26912144            920459
!d S}o;N;U(U(k26912144            920459
.c? @RS3T-l26912144            920459ITPUB个人空间 BvK.n!_P_ j7u
            920459

36 rows selected.

SQL> select last_change# from v$datafile;//终止SCN,每个数据文件都有一个终止SCN,每执行一次CHECKPOINT,由CKPT进程来更新,改SCN保存在控制文件中,当数据库被open之后,该值即变成#ffffff无穷大

LAST_CHANGE#ITPUB个人空间+qp9\|K_#P m|
------------

36 rows selected.

SQL> select group#,sequence#,first_change# from v$Log;//high(low) SCN、next SCN,first_change#在日志发生切换时候的SCN号,由LGRW来记录。即next scn,是下一个组的High(low) scn

    GROUP#  SEQUENCE# FIRST_CHANGE#ITPUB个人空间\+[n!Ak1rUM
---------- ---------- -------------ITPUB个人空间?1v-w!F o,^6[
         1         25        890245
[ e5Lh!r GZa%D26912144         2         26        920458

ITPUB个人空间w1H ^:Q'n
四.数据库启动过程验证SCN:
H0i"X+P@2utk \26912144
ITPUB个人空间B I:PQ1J-]&e!l
数据库启动过程,首先会检查控制文件和数据文件中的检查点次数是否一致,如果不一致需要对数据文件进行介质恢复。如果一致执行下一步检查,检查数据文件的启动SCN和终止SCN是否相同,如果数据库关闭是非正常关闭,那么终止SCN肯定是空,那么这个时候需要完成一个实例恢复的过程,实例恢复过程需要在线日志组中的日志,如果在线日志组中的日志都被破坏,那么数据库是无法正常打开的。如果启动SCN和终止SCN相同,那么数据库就可以OPEN了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值