1.SCN是oracle表示时间流逝的一种方式,它是由内核产生的一个数。次序对于恢复操作很重要,而操作系统时间和硬件时间不可信任,所以SCN就是oracle的解决方案。
2.SCN散布在各种文件的各个部分,所以它也是oracle同步各种文件的一种手段,是判断数据文件是否需要恢复的指标,一个数据库只有一个全局的SCN产生器。
3.v$database的信息大部分来自于控制文件,通过查询v$database.CURRENT_SCN可以得到一个最新的SCN。如果想得到当前的SCN号而不是新产生的SCN号,则可以调用dbms_flashback.GET_SYSTEM_CHANGE_NUMBER 。
4.SCN经常以:“SCN:0xffff.ffffffff”的形式出现在转存文件中,不能排除多条重做记录的SCN一样的情况,这说明有一个以上的修改操作分配到同一个SCN号,因此oracle又创造了SUBSCN,SUBSCN经常以“SUBSCN:n”的形式出现在转储文件中。一个修改操作完成后,SCN和SUBSCN都会被保存在被修改的数据块的头部,占用7字节。SCN还是叫SCN,SUBSCN改成为SEQ,这就是数据块的版本号(SCN+SEQ)。
5.总共有4种SCN:系统检查点(System Checkpoint)SCN、数据文件检查点(Datafile Checkpoint)SCN、结束SCN(Stop SCN)、开始SCN(Start SCN)。其中前面3种SCN存在于控制文件中,最后一种则存在于数据文件的文件头中。