oracle SCN跟TIMESTAMP之間轉(zhuǎn)換
Sql代碼
--獲取當(dāng)前的SCN
select dbms_flashback.get_system_change_number scn1,
timestamp_to_scn(sysdate) scn2 from dual;
--將SCN轉(zhuǎn)換成功時間
select to_char(scn_to_timestamp(34607271), 'yyyy-mm-dd hh24:mi:ss') chr,
timestamp_to_scn(scn_to_timestamp(34607271)) dt
from dual;
作為對于閃回操作(flashback)的一個增強(qiáng),Oracle10g提供了函數(shù)對于SCN和時間戳進(jìn)行相互轉(zhuǎn)換。
首先通過dbms_flashback.get_system_change_number 可以獲得系統(tǒng)當(dāng)前的SCN值:
SQL> col scn for 9999999999999
SQL> select dbms_flashback.get_system_change_number scn from dual;
SCN
--------------
8908390522972
通過scn_to_timestamp函數(shù)可以將SCN轉(zhuǎn)換為時間戳:
SQL> select scn_to_timestamp(8908390522972) scn from dual;
SCN
---------------------------------------------------------------------------
05-JAN-07 10.56.30.000000000 AM
再通過timestamp_to_scn可以將時間戳轉(zhuǎn)換為SCN:
SQL> select timestamp_to_scn(scn_to_timestamp(8908390522972)) scn from dual;
SCN
--------------
8908390522972
通過這兩個函數(shù),最終Oracle將SCN和時間的關(guān)系建立起來,在Oracle10g之前,是沒有辦法通過函數(shù)轉(zhuǎn)換得到SCN和時間的對應(yīng)關(guān)系的,一般可以通過logmnr分析日志獲得。
但是這種轉(zhuǎn)換要依賴于數(shù)據(jù)庫內(nèi)部的數(shù)據(jù)記錄,對于久遠(yuǎn)的SCN則不能轉(zhuǎn)換,請看以下舉例:
SQL> select min(FIRST_CHANGE#) scn,max(FIRST_CHANGE#) scn from v$archived_log;
SCN SCN
------------------ ------------------
8907349093953 8908393582271
SQL>
select scn_to_timestamp(8907349093953) scn from dual;
select scn_to_timestamp(8907349093953) scn 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
ORA-06512: at line 1
SQL> select scn_to_timestamp(8908393582271) scn from dual;
SCN
---------------------------------------------------------------------------
05-JAN-07 11.45.50.000000000 AM
相關(guān)文章
數(shù)據(jù)庫查詢排序使用隨機(jī)排序結(jié)果示例(Oracle/MySQL/MS SQL Server)
數(shù)據(jù)庫查詢排序使用隨機(jī)排序結(jié)果示例,這里提供了Oracle/MySQL/MS SQL Server三種數(shù)據(jù)庫的示例2013-12-12安裝Oracle加載數(shù)據(jù)庫錯誤areasQueries的解決
安裝Oracle加載數(shù)據(jù)庫錯誤areasQueries的解決...2007-03-03[Oracle] Data Guard CPU/PSU補(bǔ)丁安裝詳細(xì)教程
以下是對Data Guard CPU/PSU補(bǔ)丁安裝的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下2013-07-07如何解決Oracle EBS R12 - 以Excel查看輸出格式為“文本”的請求時亂碼
這篇文章主要介紹了如何解決Oracle EBS R12 - 以Excel查看輸出格式為“文本”的請求時亂碼的相關(guān)資料,需要的朋友可以參考下2015-09-09Oracle7.X 回滾表空間數(shù)據(jù)文件誤刪除處理方法
Oracle7.X 回滾表空間數(shù)據(jù)文件誤刪除處理方法...2007-03-03pl/sql連接遠(yuǎn)程oracle服務(wù)器的配置教程
這篇文章主要為大家詳細(xì)介紹了pl/sql連接遠(yuǎn)程oracle服務(wù)器的配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07關(guān)于sql腳本導(dǎo)入Oracle時重復(fù)生成check約束的問題解決
這篇文章主要給大家介紹了關(guān)于sql腳本導(dǎo)入Oracle時重復(fù)生成check約束的問題解決方法,文中給出了詳細(xì)的檢查步驟,對大家理解和解決這個問題具有很好的幫助,需要的朋友們下面來一起看看吧。2017-05-05