oracle 闪回

访客9年前oracle数据库2475

 Flashback query(闪回查询)原理

  Oracle根据undo信息,利用undo数据,类似一致性读取方法,可以把表置于一个删除前的时间点(SCN),从而将数据找回。

用途:

    

 短时间内数据恢复到前一段时间点或者SCN,表结构发生改变不支持 若alert drop 等等

 

用法:

    先查询是否符合闪回条件

 

SQL> show parameter undo;

NAME                                TYPE       VALUE

------------------------------------ ----------- ------------------------------

undo_management                     string     AUTO

undo_retention                        integer    1000

undo_tablespace                       string     UNDOTBS1

其中undo_management = auto,设置自动undo管理AUM),该参数默认设置为:auto

Undo_retention = n(),设置决定undo最多的保存时间,其值越大,就需要越多的undo表空间的支持。修改undo_retention的命令如下:

SQL> alter system set undo_retention = 3600;

System altered

 

 

闪回实现方式

1.      获取数据删除前的一个时间点或scn,如下:

SQL>select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') time, to_char(dbms_flashback.get_system_change_number) scn from dual;

 

2.      查询该时间点(或scn)的数据,如下:

SQL> select * from t as of timestamp to_timestamp('2015-06-29 22:57:47', 'yyyy-mm-dd hh24:mi:ss');

SQL> select * from t as of scn 1060174;

3.      将查询到的数据,新增到表中。也可用更直接的方法,如:

SQL>create table tab_test as select * from t of timestamp to_timestamp('2015-06-29 22:57:47', 'yyyy-mm-dd hh24:mi:ss');

        

注:推荐使用scn,由于oracle9i中,因为scn与时间点的同步需要5分钟,如果最近5分钟之内的数据需要Falshback query查询,可能会查询丢失,而scn则不存在这个问题。Oracle10g中这个问题已修正(scn与时间点的大致关系,可以通过logmnr分析归档日志获得)。

Falshback query查询的局限:

1. 不能Falshback5天以前的数据。

2. 闪回查询无法恢复到表结构改变之前,因为闪回查询使用的是当前的数据字典。

3. 受到undo_retention参数的影响,对于undo_retention之前的数据,Flashback不保证能Flashback成功。

4. drop,truncate等不记录回滚的操作,不能恢复。

5. 普通用户使用dbms_flashback包,必须通过管理员授权。 

相关文章

Oracle sql优化

 一、问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据...

plsql 中number类型字段 取消科学计数法显示

 PL/SQL DEVELOPER中禁用科学计数法:Tools - Prefrence - SQL Window - 选择:"Number fields to_char&quo...

如何彻底卸载删除oracle数据库

 windows下如何彻底删除Oracle 软件环境: 1、Windows 2000+ORACLE 8.1.7 ,oracle 10g2、ORACLE安装路径为:C:\ORACLE实现方...

PLSQL 11 注册码

注册码:Product Code:4t46t6vydkvsxekkvf3fjnpzy5wbuhphqzserial Number:601769password:xs374ca...

rownum 与order by 的执行顺序及按rownum 排序

rownum 与order by 的执行顺序及按rownum 排序

  如果select语句(非嵌套查询形式的)有order by子句,则order by子句一般都是最后一步执行的。但是如果order by子句里的字段被设置了主键约束或是被设置索引了,那么o...

oracel如何找回被删除的数据

---此sql是查询这个时间段前的数据select * from tableName as of timestamp to_timestamp('2011-05-21 11:40:00'...

评论列表

点我收录您
2015-10-15 11:55:38

不错的解决方案

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。