【Fixed Area】從SGA的Fixed Area中得到系統當前的SCN號

secooler發表於2009-09-13
警告:此實驗強烈推薦在試驗環境下嘗試,請勿在生產環境中使用。

獲取SCN的方法很多,這裡給出一種使用oradebug從Fixed Area中得到SCN的方法。

1.實驗方法:為了防止在每一步驟操作之後出現SCN改變的情況,可以瞬間連續提交如下幾條SQL命令,當第一條命令和最後一條命令顯示的SCN號相同時即可進一步進行驗證從Fixed Area中得到的SCN是完全正確的。
SQL> select dbms_flashback.get_system_change_number from dual;
SQL> oradebug setmypid
SQL> oradebug DUMPvar SGA kcsgscn_
SQL> select dbms_flashback.get_system_change_number from dual;

2.具體的實驗演示過程
sys@ora10g> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER
------------------------
                 1975526

sys@ora10g> oradebug setmypid
Statement processed.
sys@ora10g> oradebug DUMPvar SGA kcsgscn_
kcslf kcsgscn_ [0600121A8, 0600121D8) = 001E24E6 00000000 00000000 00000000 00008063 00000000 00000000 00000000 00000000 00000000 60011E88 00000000
sys@ora10g> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER
------------------------
                 1975526

3.OK,以上已經滿足我們的實驗前提。然後我們可以使用to_number將得到的得到的SCN號“1E24E6”轉換成為10進位制的數字
sys@ora10g> select to_number('1E24E6','xxxxxx') from dual;

TO_NUMBER('1E24E6','XXXXXX')
----------------------------
                     1975526

4.實驗結論,透過轉換後的SCN與我們使用dbms_flashback方法得到的SCN號完全相同。
OK,我們又多了一種得到SCN號的方法。

-- The End --

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-614564/,如需轉載,請註明出處,否則將追究法律責任。

相關文章