Oracle数据库闪回技术

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;

 

你可能感兴趣的:(Oracle)