1. SCN可以理解为ORACLE内部的时钟,有着非常重要的作用(事务管理/CR块构造/数据备份恢复等)
2. SCN由两部分组成SCN_WRAP.SCN_BASE . WRAP占2字节,BASE占4字节,但通常在内存里SCN_WRAP也占用4字节;
v$transportable_platform.ENDIAN_FORMAT=‘Little‘ <<<SCN_BASE占前4字节,SCN_WRAP占后4字节
v$transportable_platform.ENDIAN_FORMAT=‘Big‘ <<<SCN_BASE占前4字节,SCN_WRAP占后4字节
如Linux 64bit(Little):
SCN在内存里的格式:
SQL> oradebug dumpvar sga kcsgscn_
kcslf kcsgscn_ [060019598, 0600195C8) = 06BF7D34 0000000000000000 00000000 00042585 00000000 00000000 00000000 00000000 00000000 60019278 00000000
举例说明控制文件记录着SCN格式:
Database checkpoint: Thread=1 scn: 0x000a.28000679 <<<<<<<<<<<<<<<<<<<<
如AIX 64bit(Big):
SCN在内存里的格式:
SQL> oradebug dumpvar sga kcsgscn_;
kcslf kcsgscn_ [700000000019B70, 700000000019BA0) = 00000000 0170BDB300000000 00000000 001D9B9C 00000000 00000000 00000000 00000000 00000000 07000000 00019850
举例控制文件记录着SCN格式:
Database checkpoint: Thread=1 scn: 0x0000.0164835f <<<<<<<<<<<<<<<<<<<<<
3. SCN的推算公式为SCN_WRAP*4294967296+SCN_BASE (可以通过查询表SYS.SMON_SCN_TIME来验证)
select a.scn-(a.scn_wrp*4294967296+a.scn_bas) from sys.smon_scn_time a<<<<<<<<结果都为0
---------------------------------------------------
道行尚浅,欢迎拍砖。
原文地址:http://blog.csdn.net/robo23/article/details/44229915