国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

oracle SCN跟TIMESTAMP之間轉換

2020-07-26 14:30:12
字體:
來源:轉載
供稿:網友

Sql代碼
--獲取當前的SCN

復制代碼 代碼如下:

select dbms_flashback.get_system_change_number scn1,
timestamp_to_scn(sysdate) scn2 from dual;

--將SCN轉換成功時間
復制代碼 代碼如下:

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)的一個增強,Oracle10g提供了函數對于SCN和時間戳進行相互轉換。

首先通過dbms_flashback.get_system_change_number 可以獲得系統當前的SCN值:

SQL> col scn for 9999999999999
SQL> select dbms_flashback.get_system_change_number scn from dual;
SCN
--------------
8908390522972

通過scn_to_timestamp函數可以將SCN轉換為時間戳:


SQL> select scn_to_timestamp(8908390522972) scn from dual;
SCN
---------------------------------------------------------------------------
05-JAN-07 10.56.30.000000000 AM

再通過timestamp_to_scn可以將時間戳轉換為SCN:

SQL> select timestamp_to_scn(scn_to_timestamp(8908390522972)) scn from dual;
SCN
--------------
8908390522972

通過這兩個函數,最終Oracle將SCN和時間的關系建立起來,在Oracle10g之前,是沒有辦法通過函數轉換得到SCN和時間的對應關系的,一般可以通過logmnr分析日志獲得。

但是這種轉換要依賴于數據庫內部的數據記錄,對于久遠的SCN則不能轉換,請看以下舉例:


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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鄂州市| 孟村| 新竹市| 宁安市| 合作市| 资源县| 策勒县| 长岭县| 盐津县| 塔城市| 襄汾县| 汤原县| 娱乐| 屯留县| 深州市| 丽水市| 嘉善县| 灵璧县| 乌鲁木齐县| 庆元县| 治多县| 阳东县| 景宁| 城市| 道真| 名山县| 东兴市| 奈曼旗| 青海省| 闵行区| 同德县| 海阳市| 江西省| 贵定县| 肃北| 盘山县| 大洼县| 曲周县| 泉州市| 上高县| 无锡市|