Converting an SCN to a timestamp
Posted by John Hallas on June 27, 2014
Something nice and simple
It is easy to get the current SCN from the database and to map between SCN and timestamp because from 10g onwards there are 2 functions to convert between SCN and TIMESTAMP
In 9i there was also a means of mapping an SCN to a TIMESTAMP. This involves the system view SYS.SMON_SCN_TIME. The view no longer exists in 12c. One limitation is that it only holds 1440 rows (well it does at 9i but I can see 2711 rows in an 11GR1 database and 2500 in an 11GR2 one) and therefore cannot hold more than 5 days worth of history. There is a good blog entry explaining this at http://orainternals.wordpress.com/2012/01/19/scn-what-why-and-how/
I will demonstrate the methods below
col current_scn form 999999999999999999 col TIMESTAMP_TO_SCN form 9999999999999999 col NOW10G form 99999999999999999999 col NOW9I form 99999999999999999999 col SCN form 99999999999999999999 col TIMESTAMP form 99999999999999999999 alter session set NLS_DATE_FORMAT='DD-MON-YY HH:MI:SS';
Normal 10G onward syntax
select current_scn from v$database; CURRENT_SCN ------------------- 10900098356623
To convert an SCN to a TIMESTAMP the SCN_TO_TIMESTAMP (10g onwards) is used
select SCN_TO_TIMESTAMP(10900098356623) from dual; SCN_TO_TIMESTAMP(10900098356623) --------------------------------------------------------------------------- 27-JUN-14 07.31.31.000000000 AM
To get a SCN from a timestamp
SELECT TIMESTAMP_TO_SCN(order_date) FROM orders WHERE order_id = 5000; TIMESTAMP_TO_SCN(ORDER_DATE) ---------------------------- 574107
To get the current SCN in 9i only
select max(scn_bas) SCN_BASE from smon_scn_time; SCN_BASE ---------- 3766338378 select time_dp TIMESTAMP, scn_wrp*4294967296+SCN_bas SCN from sys.smon_scn_time where scn_bas = '3766338378' TIMESTAMP SCN ------------------ --------------------- 27-JUN-14 06:44:26 10900098368330
This entry was posted on June 27, 2014 at 9:18 am and is filed under Oracle. Tagged: current scn, scn_to_timestamp, smon_scn_time, timestamp_to_scn. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Leave a comment