Difference between revisions of "Flashback Query"

From Ittichai Chammavanijakul's Wiki
Jump to navigation Jump to search
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
* Prepare a sample table
+
* Prepare a sample table.
 
<pre>
 
<pre>
 
-- Create a test table
 
-- Create a test table
 +
 
CREATE TABLE tbl_flashback_test(
 
CREATE TABLE tbl_flashback_test(
 
   id  NUMBER(10)
 
   id  NUMBER(10)
Line 7: Line 8:
  
 
-- Check the current date/time or SCN
 
-- Check the current date/time or SCN
 +
 
SQL> SELECT current_scn, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')  
 
SQL> SELECT current_scn, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')  
 
FROM v$database;
 
FROM v$database;
Line 15: Line 17:
  
 
-- Perform an action (insert)
 
-- Perform an action (insert)
 +
 
SQL> INSERT INTO tbl_flashback_test(id) VALUES (1);
 
SQL> INSERT INTO tbl_flashback_test(id) VALUES (1);
 
COMMIT;
 
COMMIT;
Line 20: Line 23:
  
 
-- Check the LATEST content
 
-- Check the LATEST content
 +
 
SQL> SELECT COUNT(*) FROM tbl_flashback_test;
 
SQL> SELECT COUNT(*) FROM tbl_flashback_test;
  
Line 27: Line 31:
 
</pre>
 
</pre>
  
* Difference ways to perform Flashback Query
+
* Difference ways to perform Flashback Query.
 
<pre>
 
<pre>
 
-- Using SCN
 
-- Using SCN
 +
 
SELECT COUNT(*) FROM tbl_flashback_test
 
SELECT COUNT(*) FROM tbl_flashback_test
 
   AS OF SCN 722452;
 
   AS OF SCN 722452;
Line 38: Line 43:
  
 
-- Using TIMESTAMP
 
-- Using TIMESTAMP
 +
 
SELECT COUNT(*) FROM tbl_flashback_test
 
SELECT COUNT(*) FROM tbl_flashback_test
 
   AS OF TIMESTAMP TO_TIMESTAMP('2008-09-03 10:22:37', 'YYYY-MM-DD HH24:MI:SS');
 
   AS OF TIMESTAMP TO_TIMESTAMP('2008-09-03 10:22:37', 'YYYY-MM-DD HH24:MI:SS');
Line 46: Line 52:
  
 
-- Using TIMESTAMP and INTERVAL
 
-- Using TIMESTAMP and INTERVAL
 +
 
SELECT COUNT(*) FROM tbl_flashback_test
 
SELECT COUNT(*) FROM tbl_flashback_test
 
   AS OF TIMESTAMP SYSTIMESTAMP - INTERVAL '4' MINUTE;
 
   AS OF TIMESTAMP SYSTIMESTAMP - INTERVAL '4' MINUTE;

Latest revision as of 09:16, 11 March 2011

  • Prepare a sample table.
-- Create a test table

CREATE TABLE tbl_flashback_test(
  id  NUMBER(10)
);

-- Check the current date/time or SCN

SQL> SELECT current_scn, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS') 
FROM v$database;

CURRENT_SCN 	TO_CHAR(SYSTIMESTAM
----------- 	-------------------
     722452 	2008-09-03 10:22:37

-- Perform an action (insert)

SQL> INSERT INTO tbl_flashback_test(id) VALUES (1);
COMMIT;


-- Check the LATEST content

SQL> SELECT COUNT(*) FROM tbl_flashback_test;

  COUNT(*)
----------
         1
  • Difference ways to perform Flashback Query.
-- Using SCN

SELECT COUNT(*) FROM tbl_flashback_test
  AS OF SCN 722452;

  COUNT(*)
----------
         0

-- Using TIMESTAMP

SELECT COUNT(*) FROM tbl_flashback_test
   AS OF TIMESTAMP TO_TIMESTAMP('2008-09-03 10:22:37', 'YYYY-MM-DD HH24:MI:SS');

  COUNT(*)
----------
         0

-- Using TIMESTAMP and INTERVAL

SELECT COUNT(*) FROM tbl_flashback_test
   AS OF TIMESTAMP SYSTIMESTAMP - INTERVAL '4' MINUTE;

 COUNT(*)
----------
         0