1.基本闪回查询
select * from dept as of timestamp to_timestamp('2016-09-10 11:00:00','yyyy-mm-dd hh24:mi:ss');
2.闪回表
alter table emp enable row movement;
flashback table dept to timestamp to_timestamp('2016-09-10 11:00:00','yyyy-mm-dd hh24:mi:ss');
3.常见错误:ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01732: 此视图的数据操纵操作非法
00604. 00000 - "error occurred at recursive SQL level %s"
*Cause: An error occurred while processing a recursive SQL statement
(a statement applying to internal dictionary tables).
*Action: If the situation described in the next error on the stack
can be corrected, do so; otherwise contact Oracle Support.
解决方法:
alter system set "_COMPLEX_VIEW_MERGING"=true;
alter system set "_SIMPLE_VIEW_MERGING"=true;
4.相关技术
(1)查看回收站:
SHOW RECYCLEBIN;
(2)彻底删除表:
DROP TABLE EMP PURGE;
(3)清空回收站:
PURGE RECYCLEBIN;
(5)闪回数据库:
功能描述:闪回数据库可将整个数据库回退到过去某个时间点,闪回表是某张表的时空穿梭,闪回数据库则是整个数据库的时空穿梭。当然,闪回点之后的所有工作就丢失了,其实就相当于数据库的不完整恢复,所以只能以resetlogs模式打开数据库。闪回数据库会造成停机时间,当然相比于传统备份恢复机制,恢复过程会快很多。
工作原理:闪回数据库不使用撤销数据,使用另外一种机制来保留回退所需要的恢复数据,当启用闪回数据库,发生变化的数据块会不断从数据库缓冲区缓存中复制到闪回缓冲区,然后,称为恢复写入器(Recovery Writer)的后台进程会将这些数据刷新到磁盘中的闪回日志文件中。闪回的过程,则是一个 提取闪回日志-->将块映像复制回数据文件 的过程。
配置闪回数据库(闪回数据库要求数据库为归档模式)
(a).指定闪回恢复区,也就是存放闪回日志的位置,但闪回恢复区不仅仅是为了存放闪回日志,Oracle的很多备份恢复技术都用到这个区域,比如控制文件的自动备份等都会存放到此区域。
SQL> alter system set db_recovery_file_dest ='/flash_recovery_area';
(b).指定恢复区大小
SQL> alter system set db_recovery_file_dest_size=4G;
(c).指定闪回日志保留时间为2小时,即通过闪回操作,可以将数据库回退到前两小时内的任意时间点
SQL> alter system set db_flashback_retention_target=120;
(d).有序关闭数据库--mount模式下启用闪回数据库--打开数据库
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database flashback on;
SQL> alter database open;
(e). 使用闪回数据库功能
SQL> shutdown immediate;
SQL> startup mount;
SQL> flashback database to timestamp sysdate-60/1440;
SQL> alter database open resetlogs;