Oracle数据库闪回FLASHBACK命令总结

来源:互联网 发布:java静态变量 定义 编辑:程序博客网 时间:2024/05/18 20:08
 Oracle数据库闪回FLASHBACK命令总结
一、闪回查询:
1. 方法一
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
   43491990
适当的缩小scn的值,可以查到以往的数据
SQL> select * from mytest1 as of scn 43491990;
 ID NAME
---------- --------------------
  3 43
  3 43
  3 43
  3 43
  2 y

2. 方法二
假设被删除了数据的表是table_name,通过as of timestamp构造表被删除前某个时刻的状态
create table table_name_bak as select * from table_name as of  timestamp to_timestamp('2017-11-10 12:00:00','yyyy-mm-dd hh24:mi:ss');
insert into table_name select * from table_name_bak where 符合被delete条件的数据

二、闪回表
alter table zyscm.mytest enable row movement;
flashback table mytest to timestamp to_timestamp(SYSTIMESTAMP - INTERVAL '1' minute);
或者
flashback table mytest to timestamp to_timestamp('2017-11-10 12:00:00','yyyy-mm-dd hh24:mi:ss');
alter table zyscm.mytest disable row movement;

三、闪回drop:
FLASHBACK TABLE <table_name> TO BEFORE DROP [RENAME TO <new_name>];

四、闪回数据库:
配置闪回数据库
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT EXCLUSIVE;
SQL> ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=2880 SCOPE=BOTH;
SQL> ALTER DATABASE FLASHBACK ON;
SQL> ALTER DATABASE OPEN;
使用示例:
RMAN> FLASHBACK DATABASE TO TIME = "TO_DATE('2004-05-27 16:00:00','YYYY-MM-DD HH24:MI:SS')";
RMAN> FLASHBACK DATABASE TO SCN=23565;
RMAN> FLASHBACK DATABASE TO SEQUENCE=223 THREAD=1;

SQL> FLASHBACK DATABASE TO TIMESTAMP(SYSDATE-1/24);
SQL> FLASHBACK DATABASE TO SCN 53943;
SQL> FLASHBACK DATABASE TO RESTORE POINT b4_load;

闪回数据库操作完成后,必须使用以下一种方法打开数据库:
1. 在只读模式下验证是否使用了正确的目标时间或 SCN
2. 使用 RESETLOGS 参数才允许进行更新


===========10g 清空recyclebin方法======================
按用户
purge recyclebin;
purge table "BIN$....";

清除所有
PURGE DBA_RECYCLEBIN
=======================================================

===========查询回收站==================================
SELECT owner, original_name, object_name,
       type, ts_name, droptime, related, space
FROM dba_recyclebin
WHERE can_undrop = 'YES';

SELECT original_name, object_name,
       type, ts_name, droptime, related, space
FROM user_recyclebin
WHERE can_undrop = 'YES';

SQL> SHOW RECYCLEBIN