控制文件中的scn很多,最重要的有3类:数据库SCN、数据文件SCN和Checkpoint progress record中的SCN。数据库SCN和数据文件SCN分别从V$DATABASE和V$DATAFILE视图中找到,他们的值通常在全量CHECKPOINT时由CKPT进程更新。CHECKPOINT PROGRESS RECORDS中的SCN可以从V$THREAD.LAST_REDO_CHANGE#列中找到,其值也是有CKPT进程每隔3秒更新一次。
1、数据库SCN
数据库SCN通常表示最近一次全量CHECKPOINT操作时的SCN,可以查询V$DATABASE获取该SCN.
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
1449876
也可以DUMP控制文件获取数据库的SCN。dump控制文件的语法:
ALTER SESSION SET EVENTS 'immediate trace name controlf level n';
1 文件头信息
2 level 1 + 数据库信息 + 检查点信息
3 level 2 + 可重用节信息
10 level 3
SQL> ALTER SESSION SET EVENTS 'immediate trace name controlf level 2';
Session altered.
SQL> select value from v$diag_info where name = 'Default Trace File';
VALUE
----------------------------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/panda/panda/trace/panda_ora_5799.trc
SQL> ! vim /u01/app/oracle/diag/rdbms/panda/panda/trace/panda_ora_5799.trc
....
***************************************************************************
DATABASE ENTRY
***************************************************************************
(size = 316, compat size = 316, section max = 1, section in-use = 1,
last-recid= 0, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 1, numrecs = 1)
06/29/2014 21:15:43