您好,登錄后才能下訂單哦!
該內容來源官網:
http://docs.oracle.com/cd/E11882_01/server.112/e41084/functions161.htm#BABEHBCB
其用法很簡單
scn_to_timestamp(number),其中number指的是系統當前生產的SCN
文檔中NOTE部分提到一個內容值得注意:
The association between an SCN and a timestamp when the SCN is generated is remembered by the database for a limited period of time. This period is the maximum of the auto-tuned undo retention period, if the database runs in the Automatic Undo Management mode, and the retention times of all flashback archives in the database, but no less than 120 hours. The time for the association to become obsolete elapses only when the database is open. An error is returned if the SCN specified for the argument to SCN_TO_TIMESTAMP
is too old.
這里說到當SCN生成時數據庫在有限的期限內保留SCN和TIMESTAMP間的關系,這個期限是由undo最大的保存時間來確定,如果數據庫運行了UNDO的自動管理,并且存儲的閃回歸檔不小于120小時,則僅當數據庫開啟時這個關系會過期,當通過SCN_TO_TIMESTAMP函數查詢時,會返回參數太舊的錯誤提示。
同時文檔中提到一個有趣的用法,Oracle提供了一個叫ORA_ROWSCN的虛擬列,當你對某些表進行查詢是,通過SCN_TO_NUMBER()參數中指定該虛擬字段,其返回的結果是該表中行最后一次升級的時間。
SQL> select scn_to_timestamp(ORA_ROWSCN) from tbilllog3; SCN_TO_TIMESTAMP(ORA_ROWSCN) --------------------------------------------------------------------- 05-JAN-15 02.25.28.000000000 PM 05-JAN-15 05.28.56.000000000 PM
其目的主要在于閃回查詢,通過時間戳將數據回退到某一個時間點。例子可以看一下官網中的介紹
如果指定的是未來的某個SCN數,則會出現如下錯誤,
SQL> select scn_to_timestamp(2095591) from dual; select scn_to_timestamp(2095591) from dual * ERROR at line 1: ORA-08181: specified number is not a valid system change number ORA-06512: at "SYS.SCN_TO_TIMESTAMP", line 1
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。