數據文件SCN的一致性問題
2024-07-21 02:34:13
供稿:網友
1、數據庫正常運行中,所有數據文件的SCN都是一致的嗎?
2、將一數據文件offline后,再將其online時,這個數據文件的SCN會前提嗎?假如是,前提到的SCN是怎么確定的?
1.數據庫正常運行時,所有數據文件的SCN不一定一致。
問題在這個所有上,比如Offline表空間,數據文件的SCN會被凍結,而且表空間的數據文件offline/online時又會發生文件檢查點,使單個數據文件SCN和數據庫其他問題不一致。
2.表空間online時,Oracle會取得當前SCN,解凍offline文件SCN,和當前SCN同步。
簡單的實驗就可以清楚地看到這些變化:
SQL> set echo on
SQL> @a
SQL> alter system checkpoint;
System altered.
SQL> select file#,checkpoint_change# from v$datafile;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 546198149
2 546198149
3 546198149
SQL> select dbms_Flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
546198149
SQL> alter tablespace users offline;
Tablespace altered.
SQL> select file#,checkpoint_change# from v$datafile;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 546198149
2 546198149
3 546198153
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
546198159
SQL> alter tablespace users online;
Tablespace altered.
SQL> select file#,checkpoint_change# from v$datafile;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 546198149
2 546198149
3 546198162
SQL>
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
546198178
假如是單純的offline datafile,那么將不會觸發文件檢查點,只有針對offline tablespace的時候才會觸發文件檢查點,這也是為什么online datafile需要media recovery而online tablespace不需要。
實驗結果是最好的明證。