`

oracle的flashback

 
阅读更多

Oracle 10g的闪回查询概述

  与Oracle 9i相比Oracle 10g的Flashback有了非常大的改进,从普通的Flashback Query发展到了多种形式,主要表现在如下几方面新特性

  1、Flashback Database

  Oracle Flashback Database特性允许通过SQL语句Flashback Database语句,让数据库前滚到当前的前一个时间点或者SCN,而不需要做时

间点的恢复。闪回数据库可以迅速将数据库回到误操作或人为错误的前一个时间点,如Word中的"撤消"操作,可以不利用备份就快速的实现基

于时间点的恢复。Oracle通过创建新的Flashback Logs(闪回日志),记录数据库的闪回操作。如果希望能闪回数据库,需要设置如下参数:

DB_RECOVER_FILE_DEST日志的存放位置,DB_RECOVER_FILE_DEST_SIZE恢复区的大小。在创建数据库的时候,Oracle将自动创建恢复区,但默认

是关闭的,需要执行alter database flashback on命令。

  例:执行Flashback Database命令格式。

SQL>flashback database to time to_timestamp(xxx);

SQL>flashback database to scn xxx

  2、Flashback Table

  Oracle Flashback Table特性允许利用Flashback Table语句,确保闪回到表的前一个时间点。与Oracle 9i中的Flashback Query相似,利

用回滚段信息来恢复一个或一些表到以前的一个时间点(一个快照)。要注意的是,Flashback Table不等于Flashback Query,Flashback

Query仅仅是查询以前的一个快照点而已,并不改变当前表的状态,而Flashback Table将改变当前表及附属对象一起回到以前的时间点。

  语法:

flashback table tablename to timestamp xxx或

flashback table tablename to scn xxx

  注意:如果需要闪回一个表,需要以下条件:

  ·需要有flashback any table的系统权限或者是该表的flashback对象权限;

  ·需要有该表的select,insert,delete,alter权限;

  ·必须保证该表row movement。

  例:执行将test表闪回到2005年5月7日下午3点。

SQL>flashback table test to timestamp to_timestamp(’2005-05-07 15:00:00’,’yyyy-mm-dd hh24:mi:ss’);

  3、Flashback Drop

  Oracle Flashback Drop特性提供一个类似回收站的功能,用来恢复不小心被删除的表。当删除表时,Oracle 10g并不立刻释放被删除的表

所占用的空间,而是将这个被删除的表进行自动重命名(为了避免同类对象名称的重复)并放进回收站中。所谓的回收站类似于Windows系统中

的回收站,是一个虚拟的容器,用于存放所有被删除的对象,在回收站中被删除的对象将占用创建时的同样的空间。如果这个被删除的表需要

进行恢复,就可利用Flashback Drop功能。

  例:进行一个删除表后恢复的简单测试。

  (1)显示回收站信息

SQL>show recyclebin;

  可以看到,回收站中是没有任何结果的,表示没有任何表在回收站中。

  (2)创建一个表,并删除,再次显示回收站信息

SQL>create table test_drop(name varchar2(10));

SQL>drop table test_drop;

SQL>show recyclebin;

ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME

TEST_DROP BIN$b+XkkO1RS5K10uKo9BfmuA==$0 TABLE 2005-05-07:14:30:47

  (3)对被删除的表进行恢复

SQL>flashback table test_drop to before drop;或

SQL>flashback table "BIN$b+XkkO1RS5K10uKo9BfmuA==$0" to before drop;

  (4)管理回收站

  清除回收站中的单个表:purge table test_drop

  清除整个回收站:purge recyclebin

  清除不同的对象回收站:purge user_recyclebin或purge dba_recyclebin

  (5)确认删除一个表

SQL>drop table test_drop purge;

  如果删除一个表且不放到回收站中不能进行恢复,在drop语句中可以利用purge选项。

  4、Flash Version Query

  Oracle Flashback Version Query特性,利用保存的回滚信息,可以看到特定的表在时间段内的任何修改,如电影的回放一样,可以了解

表在该期间的任何变化。Flashback version query一样依赖于AUM,提供了一个查看行改变的功能,能找到所有已经提交了的行的记录,分析

出过去时间都执行了什么操作。Flashback version query采用VERSIONS BETWEEN语句来进行查询,常用的方法:

  ·VERSIONS_SCN - 系统改变号

  ·VERSIONS_TIMESTAMP - 时间

  例如:在test表中,时间1插入一条记录,时间2删除了这条记录,对于时间3执行select * from test当然查询不到这条记录,只能看到该

表最后的提交记录。这时如果利用Flash Table或者是Flash Query,只能看到过去的某一时间点的一个快照,而利用Flashback Version Query

,能够把时间1、时间2的操作给记录下来,并详细的查询出对表进行的任何操作。

SQL>select versions_starttime,versions_endtime, versions_xid,versions_operation,id

from test versions

between timestamp minvalue and maxvalue

order by versions_starttime;

  在上述查询中,列 versions_starttime、versions_endtime、versions_xid、versions_operation是伪列,还有一些伪列,如

versions_startscn和versions_endscn显示了该时刻的系统更改号。列versions_xid显示了更改该行的事务标识符。

  当然,除了分析以上所有的变更之外,可以根据需要指定时间段,如显示在2005-05-07时间在15:30到16:30之间test表的所有变更。

SQL>select id from test

versions between timestamp to_date(’2005-05-07 15:30:00’,’yyyy-mm-dd hh24:mi:ss’) and to_date(’2005-05-07 16:30:00’,’

yyyy-mm-dd hh24:mi:ss’)

  5、Flashback Transaction Query

  Oracle Flashback Transaction Query特性确保检查数据库的任何改变在一个事务级别,可以利用此功能进行诊断问题、性能分析和审计

事务。它其实是Flashback Version Query查询的一个扩充,Flashback Version Query说明了可以审计一段时间内表的所有改变,但是也仅仅

是能发现问题,对于错误的事务,没有好的处理办法。而Flashback Transaction Query提供了从FLASHBACK_TRANSACTION_QUERY视图中获得事

务的历史以及Undo_sql(回滚事务对应的sql语句),也就是说审计一个事务到底做了什么,甚至可以回滚一个已经提交的事务。

  例:Flashback Transaction Query的操作实例。

  (1)在test表中删除记录,获得事务的标识XID,然后提交。

SQL>delete from test where id=2;

SQL>select xid from v$transaction;

XID

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

04001200AE010000

SQL>commit;

  在测试中方便起见,在事务没有提交的时候,获得事务的XID为04001F0035000000。实际情况下,不可能去跟踪每个事务,想要获得已提交

事务的XID,就必须通过上面的Flashback Version Query。

  (2)进行Flashback Transaction Query

SQL>select * from FLASHBACK_TRANSACTION_QUERY

where xid=’04001F0035000000’;

UNDO_SQL

insert into "FLASHTEST"."TEST"("ID") values (’2’);

  注意:这个删除语句对应的是1个Insert语句,如果想回滚这个事务,执行这个Insert语句即可。

  可以看到,Flashback Transaction Query主要用于审计一个事务,并可以回滚一个已经提交的事务。如果确定出错的事务是最后一个事务

,我们利用Flashback Table或者Flashback Query就可以解决问题。但是,如果执行了一个错误的事务之后,又执行了一系列正确的事务,那

么上面的方法就无能为力,利用Flashback Transaction Query可以查看或回滚这个错误的事务。

  结束语

  通过上面的描述,可以看出闪回功能使用户恢复偶然的错误删除更加容易,增强了系统的可用性与读一致性。

 

转自:http://blog.163.com/card_2005/blog/static/11781036820098172261454/

分享到:
评论

相关推荐

    oracle flashback技术总结

    ### Oracle Flashback 技术详解 #### 一、概述 Oracle Flashback 技术是一种能够帮助用户恢复数据库至某一特定时间点的技术。该技术利用了Undo Segment中的数据,因此受到`UNDO_RETENTION`参数的影响。为了启用...

    ORACLE flashback database测试

    ORACLE flashback database测试,主要进行ORACLE flashbackup 闪回整个数据库的实现。

    Oracle Flashback技术

    Oracle Flashback技术是Oracle数据库提供的一种强大的数据恢复和时间旅行功能,它允许用户查看和恢复到数据库的某个历史状态,而无需依赖传统的备份和恢复过程。这一特性在处理误删除、错误更新或需要查看历史数据时...

    ORACLE FLASHBACK综述.pdf

    ORACLE FLASHBACK 综述 Oracle Flashback 是 Oracle 数据库中的一种功能,允许用户快速地恢复数据库到以前的状态,从而避免了由于操作失误或用户错误带来的问题。下面是 Oracle Flashback 的知识点。 1. Oracle ...

    Oracle Flashback 技术总结

    Oracle Flashback技术是Oracle数据库提供的一种强大的数据恢复和历史数据查询功能,它允许用户恢复到数据库的某个历史状态,或者查询过去的某个时刻的数据。这项技术的核心是基于Undo Segment中的信息,Undo Segment...

    oracle flashback特性(闪回语句,闪回表,闪回数据库).doc

    Oracle Flashback 特性 Oracle Flashback 是 Oracle 数据库中的一种功能强大的特性,可以让用户快速地恢复到过去的某个时间点,查看过去的数据状态,或者是回滚到某个特定的事务状态。Flashback 特性可以分为三个...

    oracle flashback闪回技术

    Oracle Flashback技术是数据库管理系统中的一种高级特性,它允许用户恢复到数据库的某个历史状态,无需进行复杂的备份和恢复操作。这项技术主要基于事务日志和快照来实现,为数据库管理员提供了极大的便利,尤其在...

    Oracle Flashback在医院数据恢复中的应用.pdf

    Oracle Flashback技术是Oracle数据库提供的一种高级数据恢复机制,它允许用户恢复到数据库的某个历史状态,无需回滚日志或还原备份。在医院数据恢复中,这一特性尤为重要,因为医院业务的连续性和数据完整性至关重要...

    Oracle Flashback技术总结

    ### Oracle Flashback技术详解 #### 一、概述 Oracle Flashback技术是一种强大的数据恢复机制,它可以帮助用户在遇到数据丢失或损坏的情况下恢复到之前的某个时间点。这项技术基于Undo Segment中的内容,允许用户...

    Oracle_Flashback_技术_总结.pdf

    在Oracle 10g中,Flashback技术包含了多个组件,如Flashback Database、Flashback Drop、Flashback Query(包括Flashback Query、Flashback Version Query和Flashback Transaction Query)以及Flashback Table。...

    Oracle_Flashback家族

    这一技术在Oracle 10g版本中得到了极大的增强和发展,形成了一个完整的“Flashback家族”,其中包括Flashback Database、Flashback Drop、Flashback Query(进一步细分为Flashback Query、Flashback Version Query、...

    oracle中FLASHBACK

    FLASHBACK DATABASE flashback data1base闪回到过去的某一时刻 闪回点之后的所有工作都将丢失 必须使用resetlogs创建新的场景并打开数据库(一旦resetlogs之后,将不能再闪回至resetlogs之前的时间点) .......

    flashback——oracle

    "Oracle-Flashback-技术-总结.txt"和"oracle_10g_flashback(数据恢复).txt"以及"oracle_10g_flashback.txt"这三份文档可能提供了一个全面的概述,包括Flashback日志、闪回数据库(Flashback Database)、闪回事务...

    oracle 10g flashback(数据恢复)

    ### Oracle 10g Flashback 数据恢复功能详解 Oracle 10g 引入了强大的 Flashback 技术,这是一系列旨在帮助管理员和开发者在出现数据丢失或损坏时能够快速恢复数据的功能集合。该技术从 Oracle 9i 开始引入,并在 ...

    第16章Oracle闪回(Flashback)技术.pptx

    "Oracle 闪回(Flashback)技术" Oracle 闪回(Flashback)技术是 Oracle 数据库提供的一系列人为错误更正技术,用于快速恢复逻辑误操作。闪回技术从 Oracle 9i 版本开始,逐步发展到 Oracle 11g 版本,成为数据库...

    oracle11g flashback archive 资料整理

    Oracle 11g Flashback Archive 资料整理 Oracle Flashback Archive 是 Oracle 11g 中的一项新特性,旨在提供有针对性数据表的可控时间闪回功能。Flashback Archive 可以实现对特定数据表的闪回,保留不同时间的数据...

    Oracle中有后悔药卖吗?Oracle中的回闪查询: Oracle 10g 回闪实验文档

    Oracle 10g引入了一系列回闪(Flashback)技术,旨在提供一种快速恢复数据库至特定时间点的能力,而无需传统的备份和恢复过程。这些技术允许数据库管理员轻松地撤消数据更改或恢复到特定的时间点,为误操作提供了...

    Oracle 闪回特性 FLASHBACK & RECYCLEBIN

    Oracle 闪回特性 FLASHBACK & RECYCLEBIN Flashback 系列是 Oracle 数据库中的一组功能强大且实用的闪回机制,旨在帮助数据库管理员和开发者快速恢复数据库中的各种对象,包括表、数据、事务等。Flashback 系列的...

Global site tag (gtag.js) - Google Analytics