OracleSCN与时间戳的转换
-获取当前SCN
复制代码代码如下所示:
选择dbms_flashback.get_system_change_number scn1,
timestamp_to_scn(SYSDATE)scn2双;
-将SCN转换为成功的时间
复制代码代码如下所示:
选择to_char(scn_to_timestamp(34607271),'yyyy-mm-dd hh24:MI:SS)CHR,
timestamp_to_scn(scn_to_timestamp DT(34607271))
从双;
至于闪回操作(闪回)增强,Oracle10g提供功能SCN和时间戳转换。
系统的当前SCN值可以通过以下方式获得dbms_flashback.get_system_change_number:
SQL 9999999999999
SQL >选择dbms_flashback.get_system_change_number SCN从双;
SCN
—
八兆九千零八十三亿九千零五十二万二千九百七十二
SCN可以通过scn_to_timestamp函数转换为时间戳:
SQL >选择scn_to_timestamp(8908390522972)SCN从双;
SCN
---------------------------------------------------------------------------
05-jan-07 10.56.30.000000000是
时间戳可以转换为:通过timestamp_to_scn SCN
SQL >选择timestamp_to_scn(scn_to_timestamp(8908390522972))SCN从双;
SCN
—
八兆九千零八十三亿九千零五十二万二千九百七十二
通过这两个函数,Oracle最终将建立SCN与时间的关系。在Oracle10g,没有办法通过函数变换得到SCN和时间之间的对应关系。logmnr可以通过日志分析获得的一般。
但这种转换取决于数据库中的数据记录,不能将其转换为长的SCN。请看下面的例子:
SQL >选择min(first_change #)SCN,max(first_change #)SCN从V archived_log美元;
SCN SCN
------------------------------------
8907349093953 8908393582271
SQL >
复制代码代码如下所示:
(8907349093953)选择scn_to_timestamp SCN从双;
(8907349093953)选择scn_to_timestamp SCN从双
*
第1行错误:
ora-08181:指定数量是不是一个有效的系统更改号
ora-06512:在系统scn_to_timestamp线,1
ora-06512:1行
SQL >选择scn_to_timestamp(8908393582271)SCN从双;
SCN
---------------------------------------------------------------------------
05-jan-07 11.45.50.000000000是