Wednesday, October 30, 2019

FLASHBACK in Oracle

SQL> SET DEFINE OFF;
SQL> SET LINES 100;
SQL> SET PAGES 50;
SQL> CREATE TABLE TEST_FLASHBACK (ID NUMBER(2) ,NAME VARCHAR2(10));

Table created.

SQL> INSERT INTO TEST_FLASHBACK VALUES(1,'RAJ');

1 row created.

SQL> INSERT INTO TEST_FLASHBACK VALUES(2,'SEKHAR');

1 row created.

SQL> INSERT INTO TEST_FLASHBACK VALUES(3,'JAGA');

1 row created.

SQL> INSERT INTO TEST_FLASHBACK VALUES(4,'SIVA');

1 row created.

SQL> INSERT INTO TEST_FLASHBACK VALUES(5,'SCOTT');

1 row created.

SQL> INSERT INTO TEST_FLASHBACK VALUES(6,'SMITH');

1 row created.

SQL> COMMIT;

Commit complete.

SQL> SELECT * FROM TEST_FLASHBACK;

        ID NAME
---------- ----------
         1 RAJ
         2 SEKHAR
         3 JAGA
         4 SIVA
         5 SCOTT
         6 SMITH

6 rows selected.

SQL>
SQL> SELECT * FROM TEST_FLASHBACK;

        ID NAME
---------- ----------
         1 RAJ
         2 SEKHAR
         3 JAGA
         4 SIVA
         5 SCOTT
         6 SMITH

6 rows selected.

SQL> DELETE FROM TEST_FLASHBACK WHERE ID IN (4,5,6);

3 rows deleted.

SQL> COMMIT;

Commit complete.

SQL> SELECT * FROM TEST_FLASHBACK;

        ID NAME
---------- ----------
         1 RAJ
         2 SEKHAR
         3 JAGA

SQL> FLASHBACK TABLE TEST_FLASHBACK TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '5' MINUTE);
FLASHBACK TABLE TEST_FLASHBACK TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '5' MINUTE)
                *
ERROR at line 1:
ORA-08189: cannot flashback the table because row movement is not enabled


SQL> ALTER TABLE TEST_FLASHBACK ENABLE ROW MOVEMENT;

Table altered.

SQL> FLASHBACK TABLE TEST_FLASHBACK TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '5' MINUTE);

Flashback complete.

SQL> SELECT * FROM TEST_FLASHBACK;

        ID NAME
---------- ----------
         1 RAJ
         2 SEKHAR
         3 JAGA
         4 SIVA
         5 SCOTT
         6 SMITH

6 rows selected.

SQL>

No comments:

Post a Comment