1-- 控制文件
2SQL> SELECT checkpoint_change# FROM v$database;
3
4CHECKPOINT_CHANGE#
5------------------
6 19576849
7
8-- 数据文件头,这里用 v$datafile_header,不同于 v$datafile,后者是控制文件里的信息
9SQL> SELECT file#, checkpoint_change# FROM v$datafile_header;
10
11 FILE# CHECKPOINT_CHANGE#
12---------- ------------------
13 1 19576849
14 2 19576849
15 3 19576849
16 4 19576849
17 5 19576849
18 7 19576849
19
20-- 重做日志文件
21 GROUP# FIRST_CHANGE# NEXT_CHANGE#
22---------- ------------- ------------
23 1 18658076 18851288
24 2 18851288 18952817
25 3 18548980 18658076
26 4 18952817 19136256
27 5 19136256 19246277
28...
29...
30
31-- 块头 (Block Header):ITL 中的 SCN
32SQL> ALTER SYSTEM DUMP DATAFILE 5 BLOCK 376;
33
34System altered.
35
36SQL> select tracefile from v$process where addr=(select paddr from v$session where sid=(select distinct sid from v$mystat));
37
38TRACEFILE
39----------------------------------------------------------------------------------------------------
40/u01/app/oracle/diag/rdbms/lucifer/lucifer/trace/lucifer_ora_3521.trc
41
42-- 这里可以看到 0xc80dd2 是一个十六进制数,0x0000000000c80dd2 是一个补 0 后的 64位 的 SCN
43SQL> !grep "scn:" /u01/app/oracle/diag/rdbms/lucifer/lucifer/trace/lucifer_ora_3521.trc
44scn: 0xc80dd2 seq: 0x02 flg: 0x04 tail: 0x0dd22002
45 Format scn: 0x0000000000c80dd2
46
47-- 转十进制
48SQL> SELECT TO_NUMBER('80dd2', 'XXXXXX') AS dec_value FROM dual;
49
50 DEC_VALUE
51----------
52 13110738
53
54-- 回滚段 (Undo Segment):事务槽中的 SCN
55SQL> SELECT segment_name, tablespace_name, status FROM dba_rollback_segs;
56
57SQL> ALTER SYSTEM DUMP UNDO HEADER '_SYSSMU6_813816332$';
58
59SQL> !grep "scn:" /u01/app/oracle/diag/rdbms/lucifer/lucifer/trace/lucifer_ora_3521.trc
60scn: 0x12b1500 seq: 0x01 flg: 0x00 tail: 0x00000000
61
62-- 转十进制
63SQL> SELECT TO_NUMBER('12b1500', 'XXXXXXXX') AS dec_value FROM dual;
64
65 DEC_VALUE
66----------
67 19600640