Oracle SCN headroom、ORA-19706和_external_scn_rejection_threshold_hours参数说明(四)
本。
Installing,Executing and Interpreting output from the “scnhealthcheck.sql” script [ID1393363.1]
select
version,
to_char(SYSDATE,'YYYY/MM/DD HH24:MI:SS') DATE_TIME,
((((
((to_number(to_char(sysdate,'YYYY'))-1988)*12*31*24*60*60) +
((to_number(to_char(sysdate,'MM'))-1)*31*24*60*60) +
(((to_number(to_char(sysdate,'DD'))-1))*24*60*60) +
(to_number(to_char(sysdate,'HH24'))*60*60) +
(to_number(to_char(sysdate,'MI'))*60) +
(to_number(to_char(sysdate,'SS')))
)* (16*1024)) - dbms_flashback.get_system_change_number)
/(16*1024*60*60*24)
)indicator
from v$instance
这里为什么是1988. Maclean 的blog 上有一段说明,直接引用过来:
在1988年发布了Oracle V6,首次实现了行级锁定,首次实现了数据库热备份,Oracle公司从Belmont移到加利福尼亚的redwood shores,并引入了PL/SQL。
能否在1988年之前运行Oracle V6以后的程序? Maclean 的测试如下,将Oracle 10.2.0.5 数据的OS时间改到1988年之前,测试结果如下:
[root@vrh8 ~]# date -s "1985-07-2500:00:00"
Thu Jul 25 00:00:00 EDT 1985
SQL> startup;
ORA-01513: invalid current time returned byoperating system
[oracle@vrh8 ~]$ strace -ostartup.log -p 9935
Process 9935 attached - interrupt to quit
SQL> startup;
ORA-01513: invalid current time returned byoperating system
[oracle@vrh8 ~]$ oerr ora 01513
01513, 00000, "invalid current timereturned by operating system"
// *Cause: Theoperating system returned a time that was not between
// 1988 and 2121.
// *Action: Correct the time kept by theoperating system.
这里可以看到Oracle数据库可运行的时间区间其实是 1988-2121年,但是前面的说明也提高,SCN headroom 可以使用500年。这个作用就不那么明显了。