9i新特性之Flashback Query的应用-------------针对DML误操作的恢复(1)

原创 2003年12月31日 14:04:00
 

9i新特性之Flashback Query的应用-------------针对DML误操作的恢复<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

作者:刘颖博

时间:2003-12-29

mailliuyingbo@126.com,请指正

 

转载请注明出处及作者

 

9i之前,如果出现DML的误操作,只能通过备份来完成基于时间点的恢复,9i给提供了一个新的特性Flashback Query,我们可以应用此特性,可以很方便的实现恢复。但是要注意的是,Flashback Query 仅仅是一个查询的机制,不会真正的UNDO任何数据。

 

1.       什么是Flashback Query

利用Oracle 多版本读一致的特性通过undo 来提供所需的前镜像中的数据。通过这个功能,可以看到历史数据,甚至用历史数据来修复误操作引起的错误。可以通过指定时间或者SCN 来检索需要的数据。Uses Oracle's multiversion read-consistency capabilities to restore data by applying undo as needed. You can view and repair historical data, and you can perform queries on the database as of a certain wall clock time or user-specified system commit number (SCN).

可以理解成,Oracle在之前的版本中就已经存在了Flashback Query了,之前我们把它称为多版本的读一致性。(多版本特性提供跨多个用户会话的一致性视图,Oracle不执行dirty read

2.       准备工作

the best way:数据库处于Automatic Undo Management 状态(也有文章说必须,我查找了oracle文档应用了这个词Prerequisite<先决条件>,同时在AskTom上我也查找到相应的解释,指明最好是自动Undo管理,手动的Undo管理也是可以的,并且有例子)

最大可以闪回查询的时间段由UNDO_RETENTION 初始化参数(单位为秒)指定,参看下面执行命令

SQL> show parameter undo

 

NAME                              TYPE        VALUE

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

undo_management                    string      AUTO

undo_retention                       integer     600

undo_suppress_errors                 boolean     FALSE

undo_tablespace                      string      UNDOTBS1

SQL>

这是一个可以动态的修改的参数,可以通过ALTER SYSTEM SET UNDO_RETENTION =<seconds>;来修改参数值

比较显然的是,你设置了相对大的UNDO_RETENTION,就必须设置足够大的UNDO ROLLBACK SEGMENTS。

3.    如何使用Flashback Query

我们可以通过两种方式来使用Flashback Query:

SQL

使用SELECT 语句的AS OF 来进行闪回查询,语法如下:

as of  scn ( timestamp) expr

 

通过关键词 AS OF 可以对表,视图,物化视图 进行Flashback Query,可以制定SCN或者TIMESTAMP,其中TIMESTAMP9i中出现的,可以有毫秒的时间单位,如

SQL> select systimestamp from dual;

 

SYSTIMESTAMP

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

29-12-03 10.15.05.171000 下午 +08:00

 

下面,进行一个例子:

SQL> connect scott/tiger

已连接。

SQL> create table test (id number(1));

 

表已创建。

 

SQL> insert into test values (1);

 

已创建 1 行。

 

SQL> insert into test values (2);

 

已创建 1 行。

 

SQL> commit;

 

提交完成。

 

SQL> select * from test;

 

        ID

----------

         1

         2

 

SQL> delete from test where id=1;

 

已删除 1 行。

 

SQL> commit;

 

提交完成。

SQL> select * from test;

 

        ID

----------

         2

SQL> select * from test as of timestamp (systimestamp -interval'10'second);

 

        ID

----------

         1

         2

SQL> insert into test (select * from test as of timestamp (systimestamp -interva

l'10'second) where id =1);

 

已创建 1 行。

 

SQL> commit;

 

提交完成。

 

SQL> select * from test;

 

        ID

----------

         2

         1

现在,利用了Flashback Query 我们恢复了test表中被误删除的记录。当然我们可以通过一些其他的方法,类似于建立一个中间表等,进行这种少量数据的DML误操作的恢复.




 

9i新特性之Flashback Query的应用----针对DML误操作的恢复(1)ZZ

9i新特性之Flashback Query的应用-------------针对DML误操作的恢复 作者:刘颖博 时间:2003-12-29mail:liuyingbo@126.com,请指正 转载请注...
  • llmmysun
  • llmmysun
  • 2004年11月02日 12:15
  • 984

9i新特性之Flashback Query的应用--针对DML误操作的恢复(2)(zz)

9i新特性之Flashback Query的应用-------------针对DML误操作的恢复(2)(zz)文章发表: brucelau发表日期: 2004-07-29阅读次数: 92用DBMS_F...
  • llmmysun
  • llmmysun
  • 2004年11月02日 12:13
  • 875

9i新特性之Flashback Query的应用-------------针对DML误操作的恢复(2)

用DBMS_FLASHBACK包 DBMS_FLASHBACK 包提供了以下几个函数: ENABLE_AT_TIME:设置当前SESSION 的闪回查询时间ENABLE_AT_SYSTEM_CHANG...
  • brucelau
  • brucelau
  • 2003年12月31日 14:05
  • 996

9i新特性之backQuery的应用-------------针对DML误操作的恢复(1)

  • zgqtxwd
  • zgqtxwd
  • 2008年04月27日 09:37
  • 110

9i新特性之backQuery的应用-------------针对DML误操作的恢复(2)

  • zgqtxwd
  • zgqtxwd
  • 2008年04月27日 15:57
  • 172

利用Flashback Query 恢复误操作的数据

利用Flashback Query 恢复误操作的数据Author:Kamus Seraphim(张乐奕)Date:2003-10Mail:kamus@itpub.net转载请注明出处及作者Oracle...
  • guoqlee
  • guoqlee
  • 2007年08月17日 15:54
  • 657

Oracle Flashback技术总结(恢复数据到某一刻)

Flashback 技术是以Undo segment中的内容为基础的, 因此受限于UNDO_RETENTON参数。要使用flashback 的特性,必须启用自动撤销管理表空间。  在Oracle 1...
  • liguiping2000
  • liguiping2000
  • 2011年10月07日 14:37
  • 1288

Oracle的闪回特性之恢复truncate删除表的数据

/* 2008/06/06 *环境:Windows XP +Oracle10.2.0.1 *循序渐进oracle——数据库管理、优化与备份恢复 *循序渐进oracle第8章:Oracle的闪回特...
  • liqfyiyi
  • liqfyiyi
  • 2012年01月02日 16:40
  • 2300

flashback六大技术之flashback query

环境: 23:05:08 hr@ORCL (^ω^) select * from v$version where rownum=1; BANNER ---------------------...
  • linwaterbin
  • linwaterbin
  • 2012年09月10日 23:11
  • 2493

利用Flashback Query 恢复误操作的数据ZZ

利用Flashback Query 恢复误操作的数据Author:Kamus Seraphim(张乐奕)Date:2003-10Mail:kamus@itpub.net转载请注明出处及作者Oracle...
  • llmmysun
  • llmmysun
  • 2004年11月02日 14:57
  • 2559
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:9i新特性之Flashback Query的应用-------------针对DML误操作的恢复(1)
举报原因:
原因补充:

(最多只允许输入30个字)