ORACLE資料庫SCN和時間的互相轉換,oracle資料庫scn
SCN(System Change Number 簡稱 SCN)是當Oracle資料庫更新後,由DBMS自動維護去累積遞增的一個數字,可以理解成ORACLE資料庫的時間戳記,從ORACLE 10G開始,提供了函數可以實現SCN和時間進行相互轉換;
用途:在進行資料庫的還原和利用資料庫的閃回功能時,進行SCN和時間的轉換就變的非常必要了;
操作方法: 1、通過dbms_flashback.get_system_change_number獲得系統當前的SCN值: SQL> select dbms_flashback.get_system_change_number scn from dual; SCN ----------------- 122037263 2、通過scn_to_timestamp函數可以將SCN轉換為時間戳記:SQL> select scn_to_timestamp(122037263) scn from dual; SCN --------------------------------------------------------------------------- 14-7月 -14 04.45.36.000000000 下午 3、還可以通過timestamp_to_scn可以將時間戳記轉換為SCN: SQL> select timestamp_to_scn(to_date('2014-07-13,13:25:59','yyyy-mm-dd,hh24:mi:ss')) scn from dual; SCN ---------------------
oracle的scn是一直增大的?什事件會觸發該值的變化?
理論上可以這麼說。事實上scn非唯一值,只有redolog 的scn值會採用+1的方式遞增,其它的是採用時間戳記的方式換算的值。觸發scn更改的事件很多,從scn的名字上很好理解:system change number。就是有更改就有scn咯。
oracle什時產生系統更改號scn
1.DML語句的發生會導致SCN的增加(你不COMMIT也會增加)
2.內部SCN預設每3秒自動增加,無論是否對資料庫進行操作
3.發生checkpoint時會增加SCN