天天看点

Oracle常用闪回操作

  1. 确认闪回启用中

    SHOW PARAMETER RECYCLEBIN;

  2. 启用闪回

    ALTER SYSTEM SET RECYCLEBIN = ON;

  3. 闪回DROP的表

    FLASHBACK TABLE xxx TO BEFORE DROP;

  4. 彻底清除DROP的表,将不能再闪回.

    PURGE TABLE xxx;

  5. 直接彻底DROP掉表

    DROP TABLE xxx PURGE;

  6. 清空所有DROP的表

    PURGE RECYCLEBIN;

  7. 确认最大可闪回多久(秒数)之前的DML操作.(不保证)

    SHOW PARAMETER undo_retention;

  8. 改变最大可闪回多久之前的DML操作

    ALTER SYSTEM SET undo_retention = 7200;

  9. 闪回误DML操作.以误操作emp表job字段为例

    a.)确认相应的xid

    SELECT versions_xid, job FROM emp VERSIONS BETWEEN SCN minvalue AND maxvalue;

    b.)确认相应需要执行的SQL语句. 即是下面查询结果集的UNDO_SQL字段的内容

    SELECT operation, start_scn, undo_sql FROM flashback_transaction_query WHERE xid = hextoraw('来自上一查询的xid');

    c1.)执行相应的SQL语句. 本方法比较准确,不会影响之后发生的其他字段的变化.

    c2.)不方便执行上一方法时,执行以下语句.注意在相应操作之后表中发生的所有操作都将被回复.

           FLASHBACK TABLE emp TO SCN 来自上一查询的SCN号;

           如果在执行时出错,并提示该表未启用行移功能(row movement),执行以下语句

           ALTER TABLE emp ENABLE ROW MOVEMENT;

    c3.)也可以恢复到某一时间点,该时间点之后的所有操作都将被回复.to_timestamp也可以使用完整格式('2009-12-04 22:16:20', 'YYYY-MM-DD HH:MI:SS');

          FLASHBACK TABLE emp TO TIMESTAMP to_timestamp('17:35', 'hh23:mi');