Oracle scn介绍(一)

2014-11-24 18:40:13 · 作者: · 浏览: 0

GET_SYSTEM_CHANGE_NUMBER
------------------------
SCN_TO_TIMESTAMP(DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER)
---------------------------------------------------------------------------
117947354
24-MAR-11 11.32.22.000000000 AM



也可以用函数



SQL> select timestamp_to_scn(SYSTIMESTAMP) as scn from dual;
control中有三种SCN分别为,system SCN、datafile SCN、last SCN,数据文件头中有一种SCN start SCN
system scn从视图v$database中获得,对应checkpoint_change#字段,datafile scn、last scn分别对应视图v$datafile中的checkpoint_change#,last_change#,而 start scn则从v$datafile_header中checkpoint_change#得到。
数据库在正常启动后下,system scn,datafile scn,start scn会相等,而last scn会被置于无穷大,这里为null。
正常关闭后(immediate,noraml,translate),上面四个scn会应执行full checkpoint 而相等。
当系统在非正常关闭后,如shutdown abort,这个时候last scn依然为无穷大,那么当重新启动实例时,系统首先会比较start scn与system scn,如果一致,那么再比较start scn 与last scan是否一样大,因为是非正常关闭,这里会不一样大,那么就需要例程恢复。
如果打开数据库时发现system scn>datafile scn,那么以为着使用旧的备份数据文件,也就是需要介质恢复
如果是system scn1、正常启动时
SQL> SELECT checkpoint_change# FROM v$database;


CHECKPOINT_CHANGE#
------------------
117866282


SQL> SELECT file#, checkpoint_change# FROM v$datafile_header;


FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 117866282
2 117866282
3 117866282
4 117866282
5 117866282
6 117866282
7 117866282
8 117866282
9 117866282
10 117866282
11 117866282


FILE# CHECKPOINT_CHANGE#
---------- ------------------
12 117866282
13 117866282
14 117866282


14 rows selected.


SQL> SELECT file#, checkpoint_change#, last_change# FROM v$datafile;


FILE# CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------ ------------
1 117866282
2 117866282
3 117866282
4 117866282
5 117866282
6 117866282
7 117866282
8 117866282
9 117866282
10 117866282
11 117866282


FILE# CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------ ------------
12 117866282
13 117866282
14 117866282


14 rows selected.
2、正常关闭后,然后在startup mount;
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.


Total System Global Area 835104768 bytes
Fixed Size 2217952 bytes
Variable Size 624953376 bytes
Database Buffers 201326592 bytes
Redo Buffers 6606848 bytes
Database mounted.
SQL> SELECT file#, checkpoint_change# FROM v$datafile_header;


FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 117925094
2 117925094
3 117925094
4 117925094
5 117925094
6 117925094
7 117925094
8 117925094
9 117925094
10 117925094
11 117925094


FILE# CHECKPOINT_CHANGE#
---------- ------------------
12 117925094
13 117925094
14 117925094


14 rows selected.


SQL> SELECT checkpoint_change# FROM v$database;


CHECKPOINT_CHANGE#
------------------
117925094


SQL> SELECT file#, checkpoint_change#, last_change# FROM v$datafile;


FILE# CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------ ------