285572001 发表于 2018-9-26 10:03:20

oracle 闪回总结

  oracle 10g闪回总结
  1.flashback query (undo)
  select current_scn from v$database;
  select * from t as of scn scn号;
  时间与scn转换函数:
  scn_to_timestamp()
  to_timestamp()
  timestamp_to_scn()
  2.flashback table(undo)
  select row_movement from dba_tables where table_name='T' and owner='TEST';
  alter table t enable row movement;
  flashback table tto scn scn号;
  3.flashback versions query(undo)
  select * from t versions between scn minvalue and maxvlaue
  order by versions_startscn;
  4.flashback transaction query(undo)
  select * from flashback_transaction_query where xid='事务id';
  事务id对应到flashback versions query中的versions_xid,这样可以找到undo_sql,对误操作撤消。
  5.flashback drop
  drop table t;
  show recyclebin
  select * from dba_recyclebin;
  flashback table t to before drop;
  select * from dba_indexes where table_name='T';
  如果有索引,索引同样会被闪回,但是索引名称会发生变化,使用
  alter index old_index_name rename to new_index_name;更改索引名称。
  t表上的触发器也同样如些。
  彻底删除表
  drop table t purge;
  清回收站
  purge recyclebin;
  是否启用recyclebin
  show parameter recyclebin;
  6.flashback database (flashback log)(生产环境下一般很少开启)
  前提条件:
  归档模式
  使用闪回恢复区(设置db_recovery_file_dest参数),存放flashback log.
  mount下,
  select flashback_on from v$database;
  alter system set db_recovery_file_dest='';
  alter database flashback on;
  select flashback_on from v$database;
  alter database open;
  select * from v$flashback_database_stat;
  select * from v$flashback_database_log;--查看数据库能够闪回到的最早scn或时间点和其它信息
  select * from v$flashback_database_logfile;--显示闪回日志文件
  查看后台进程
  select * from v$bgprocess where paddr'00';显示RVWR后台进程启动
  恢复例子:
  mount状态下,闪回数据库到某一时间点(比如误删除用户级用户下的对象)
  flashback database to scn scn号;
  --以只读方式打开数据库,查看用户是否恢复成功
  alter database open read only
  --然后以resetlogs打开
  shutdown immediate
  startup mount
  alter database open resetlogs;
  设置闪回保留
  show parameter db_flashback_retention_target

页: [1]
查看完整版本: oracle 闪回总结