How to map SCN with Timestamp before 10g [ID 365536.1]

原创 2011年10月18日 13:10:05

How to map SCN with Timestamp before 10g? [ID 365536.1]


Modified 16-MAY-2006     Type HOWTO     Status PUBLISHED


In this Document

Applies to:

Oracle Server - Enterprise Edition - Version:
Information in this document applies to any platform.


In this note, we will help Database Administrators with answers to two common questions:
How can I know the time of last transaction (time of last SCN)?
How can I map SCN with Timestamp prior to 10g?


SCN <-> TIMESTAMP conversion features are available only from Oracle 10g.  In 10g, there are two built-in functions to give the timestamp and SCN mapping details--Timestamp_to_scn() and Scn_to_timestamp().

For example: In 10g, you will issue code like,

SQL> select current_scn from v$database;

SQL> Select scn_to_timestamp(1086382) from dual;

15-DEC-05 PM


However, in earlier releases, while there is a system object - SYS.SMON_SCN_TIME that will provide the SCN to TIME mapping information.   There is no conversion facility provided.  

SYS.SMON_SCN_TIME will have a maximum of 1440 rows and each record will be for a 5 minute period.  Oracle maintains this information for maximum of 5 days after which the records will be recycled.

This means that data is stored 12 times per hour * 24 hours * 5 days=1440 rows.  

SCN value is stored internally as :
i. SCN_wrap
ii. SCN_base

Whenever the SCN is incremented, the BASE component is incremented first unil it reaches it maximum.  Once the BASE reaches the maximum value allowed, it is initialized to zero again after incrementing the WRAP by 1.

Using this logic, we can calculate the timestamp of the SCN as follows:

(SCN_WRP * 4294967296) + SCN_BAS should give us the SCN in the number format

To get the time/date for an SCN value in 9i, use the following example:

-- (a) Get the current SCN base.
SQL>select max(scn_bas) SCN_BASE from smon_scn_time;


--(b) Get the complete SCN and the timestamp.

SQL> alter session set NLS_DATE_FORMAT='DD-MON-YY HH:MI:SS';

SQL> select time_dp TIMESTAMP, scn_wrp*4294967296+SCN_bas SCN from smon_scn_time where

TIMESTAMP                 SCN
------------------            ----------
28-JUL-06 05:31:08        8252235517813






How to map SCN with Timestamp before 10g [ID 365536.1]

How to map SCN with Timestamp before 10g? [ID 365536.1] Modified 16-MAY-2006     Type HOWTO     Stat...
  • tianlesoftware
  • tianlesoftware
  • 2011年01月25日 20:49
  • 4016

数据回滚:基于时间的查询(AS OF TIMESTAMP)和(AS OF ACN) 转载自 1.应用Flashback Query查询过去的数据   ...
  • weinierzui
  • weinierzui
  • 2016年10月21日 16:22
  • 2584

java中自带时间类用法实例 Date,Timestamp,DateFormat

我们将以Java自带的时间日期类和其中的处理函数进行分析。 一、与时间日期有关的类。   java.util.Date。实现类,其对象具有时间、日期组件。   java.util.Calenda...
  • u013758116
  • u013758116
  • 2015年06月25日 15:04
  • 4697


select dbms_flashback.get_system_change_number from dual;   SCN =>TIMESTAMP: select scn_to_timest...
  • kingston001
  • kingston001
  • 2011年12月07日 14:24
  • 377


  • aoerqileng
  • aoerqileng
  • 2014年10月13日 09:07
  • 1736


手工推进scn的方法 数据库在mount状态下: alter session set events '10015 trace name adjust_scn level n'; orad...
  • zhengwei125
  • zhengwei125
  • 2016年06月29日 17:50
  • 1835

scn 和时间的对应关系

---查询当前scn SQL> select current_scn from v$database;  CURRENT_SCN ------------  49733519430   S...
  • wll_1017
  • wll_1017
  • 2014年11月18日 16:51
  • 1952

oracle 数据库,无效的SCN号错误

当出现无效的SCN号后,一般是由于DBlink连接两个数据库,当两个数据库的SCN号相差太大的时候就会报此错误,解决办法如下:         查询两个数据库的SCN号大小,(查询方法见后面),确定...
  • dongni16382
  • dongni16382
  • 2016年05月09日 15:20
  • 2884

Oracle timestamp & SCN

1, systimestamp与sysdate SQL>select systimestamp - interval '1' hour from dual; SYSTIMESTAMP-INTERV...
  • deanza
  • deanza
  • 2012年07月15日 03:43
  • 666


不完全恢复是指不完全的数据恢复,不完全恢复与完全恢复在许多方面是相同的,他们基本的命令集相同,但不完全恢复添加了一些其他命令。 引起不完全恢复的原因有很多,如丢失了联机重做日志或归档的重做日志,或者出...
  • q947817003
  • q947817003
  • 2013年10月11日 17:46
  • 2052
您举报文章:How to map SCN with Timestamp before 10g [ID 365536.1]