Oracle 10g中SCN与TimeStamp的相互转换

作为对于闪回操作(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

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

---------------------------------------------------------------------------

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

作者:51cto博客 Oracle小混子

时间: 2024-10-30 10:38:09

Oracle 10g中SCN与TimeStamp的相互转换的相关文章

如何在Oracle 10g中通过网络连接导入数据

历史上,Oracle的导入及导出功能曾采用磁盘文件作为卸载和再装载数据库的存储中介.对于较大的数据库这样"交换文件"的方式是个大问题.因为过大文件将会超过操作系统对文件大小的限制,使得导出不能实现. 一些有创新精神的数据管理员使用文件压缩功能,例如UNIX中的压缩功能,以获得交换文件的最大容量.后来版本中的导入及导出功能允许使用多种交换文件以减少限制. 在Oracle 10g中,Data Pump版的导入功能能从其他数据库实例中直接导入,从而完全删除交换文件. 第一步是定义一个数据库链

Oracle 10G 中的回收站

在Oracle 10G中,引入了一个回收站(Recycle Bin)的概念. 回收站,从原理上来说就是一个数据字典表,放置用户Drop掉的数据库对象信息.用户进行Drop操作的对象并没有被数据库删除,仍然会占用空间.除非是由于用户手工进行Purge或者因为存储空间不够而被数据库清掉.数据库有了这样的功能,能够减少很多不必要的麻烦.常常看到开发人员误把表删除,急急忙忙找DBA来想办法的情况,相信,随着10G的大范围应用,这种情形应该比较少见了. DBA管理上的相关信息可以从USER_recycle

Oracle 10G 中的"回收站"

oracle Oracle 10G 中的"回收站" by Fenng http://www.DBAnotes.net 在Oracle 10G中,引入了一个回收站(Recycle Bin)的概念. 回收站,从原理上来说就是一个数据字典表,放置用户Drop掉的数据库对象信息.用户进行Drop操作的对象并没有被数据库删除,仍然会占用空间.除非是由于用户手工进行Purge或者因为存储空间不够而被数据库清掉.数据库有了这样的功能,能够减少很多不必要的麻烦.常常看到开发人员误把表删除,急急忙忙找D

Oracle 10g中的闪回查询操作实例

与Oracle 9i相比Oracle 10g的Flashback有了非常大的改进,在Orcle 10g之前,SMON_SCN_TIME由SMON来获取和记录信息的,每5分钟记录一次,从Oracle 10g开始,LGWR首先会在SGA中记录SCN与时间的映射关系(由于LGWR至少每3秒就会被激活一次,所以现在SMON_SCN_TIME能够支持大于3秒的闪回),SMON则定期检查SGA是否内存中的映射大于磁盘上的,如果有就刷新纪录到磁盘, 而且从普通的Flashback Query发展到了多种形式,

Oracle 10g中过程PROCEDURE重建的增强

dcba上周有了一个新的发现,在Oracle10g中,当重建一个存储过程时,Oracle的行为和以前有所不同. 在Oracle9i中,即使一个完全相同的过程的重建,Oracle也需要重新编译过程,这个可以从LAST_DDL_TIME看出: [oracle@jumper oracle]$ sqlplus eygle/eygle SQL*Plus: Release 9.2.0.4.0 - Production on Sat Mar 31 17:52:55 2007 Copyright (c) 198

Oracle 10g中可以通过列方式指定HINT

看优化文档的时候发现,指定索引的HINT还可以通过列方式. 在9i和以前的版本,索引提示的格式为/*+ index(table_alias) */或/*+ index(table_alias index_name) */,但是在10g中不仅可以通过索引名称来确定HINT的索引,还可以通过指定列名的方式. SQL> select * from v$version; BANNER ------------------------------------------------------------

oracle 10g中使用Sqlplus工具以SYSDBA登陆数据库

前两天在ITPUB上看到一个帖子,提到如何用最快的方法以SYSDBA登陆数据库. 有人给出的方法是sqlplus直接回车,然后在提示用户名时输入/ as sysdba: [oracle@yans1 ~]$ sqlplus SQL*Plus: Release10.2.0.3.0 - Production on星期六8月8 22:01:47 2009 Copyright (c) 1982, 2006, Oracle.  All Rights Reserved. Enter user-name: /

Oracle 10G中如何手工创建数据库

最近在网上看到很多初学Oracle或是从旧版的Oracle升级到10G的朋友们都问如何在Oracle 10G里手工 建库的问题.今天正好有空,于是乎把在Oracle 10G里手工建库的全过程写出来,供各位从事Oracle工作 和学习的同朋友们参考,希望能够对大家有所帮助. 在Oracle中建库,通常有两种方法.一是使用Oracle的建库工且DBCA,这是一个图形界面工且,使用 起来方便且很容易理解,因为它的界面友好.美观,而且提示也比较齐全.在Windows系统中,这个工具 可以在Oracle程

在Oracle 10g中如何获得索引建议

  racle 10g的最优秀功能之一是顾问框架(Advisory Framework),它是一个优化顾问集合,可帮助您充分利用数据库.其中的一个顾问--SQL访问顾问(Access Advisor)--建议对模式中的索引和物化视图进行改变来提高性能. 但是,由于顾问框架(Advisory Framework)被一般化,以支持各种不同的顾问,因此导航DBMS_ADVISOR包中的所有存储过程和函数会十分繁琐.一个CREATE_TASK过程初始化一个新的优化任务,一个SET_TASK_PARAME