Oracle10g中使用闪回技术详解_第1页
Oracle10g中使用闪回技术详解_第2页
Oracle10g中使用闪回技术详解_第3页
Oracle10g中使用闪回技术详解_第4页
Oracle10g中使用闪回技术详解_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、oracle log中使用闪回技术在oraclelog中,可以在行、表和数据库级别使用闪回技术,具体分类如下:1、行级闪回可以使用行闪回技术撤销对个别行的错误更改。有三种行级闪回技术,他们全都依赖于存储 在撤销表空i'可中的撤销数据。(1)闪冋查询:允许根据时间点或scn(system change number)查看旧的行数据。可以 查看更ih的数据,并且,如果需要可以检索它并撤销错误的更改。(2)闪回版本查询:允许查看相同行在一段时间内的所有版本,以便可撤销逻辑错误。它 还可以提供更改的审计历史,允许比较当前数据与历史数据而不用执行dml活动。(3)闪回事务查询:允许查看事务级所做

2、的更改。此技术帮助分析和审计事务,例如, 一个批作业执行了两次,你想确定哪些对象受到影响等。使用此技术可撤销指定时间段内某 个事务所做的更改。2、表级闪回(1)闪回表:复原一个表到某个时间点,或者到指定的scn而不用恢复数据文件。此 特性使用dml更改撤销表中的更改。闪回表特性依赖于撤销数据。(2)闪回删除:允许倒退一条drop table语句的结果,而不用进行时间点恢复。闪回删 除特性使用冋收站复原被删除的表。3、数据库级闪回闪冋数据库特性允许复原整个数据库到某个时间点,从而撤销自该时间以来的所有更改。闪 回数据库主要利用闪回tl志检索数据块的更旧的版本,它也依赖归档重做日志完全地恢复数 据

3、库,不用复原数据文件和执行传统的介质恢复。闪回和传统的恢复技术对比与传统恢复技术不同,闪回技术的主要目的不是从介质丢失屮恢复,而是从人为错误屮恢复。 例如:用八可能错误的删除了某个表或者错误的更改了某个表的数据。这时候你想撤销你刚 才的操作。传统上,从人为错误中恢复数据唯一的办法就是采用用户管理的备份和恢复技术。先复原数 据库文件然后利用所有重做fi志文件前滚的过程需要长时间的停机。而闪冋技术提供了从逻辑错误屮恢复的更有效和更快的方法,多数情况下,在用这种技术进 行恢复吋数据库仍然联机并对用户可用。此外,闪回技术允许选择性地复原某些对象。使用 传统的技术,从某种意义上说某有选择,只能恢复整个数

4、据库。闪回删除-flashback tableoracle flashback table特性允许利用flashback table语句,确保闪冋到表的前一个时间点。 与oracle 9i中的flashback query相似,利用回滚段信息来恢复一个或一些表到以前的一个 时间点(一个快照)。要注意的是,flashback table 不等于 flashback query, flashback query 仅仅是查询以前的一个快照点而己,并不改变当前表的状态,而flashback table将改变当前 表及附属对象一起回到以前的时间点语法:flashback table tablename

5、to timestamp xxx 或flashback table table name to sen xxx注意:如果需要闪回一个表,需要以下条件:需要有flashback any table的系统权限或者是该表的flashback対象权限;需要有该表的 select,insert,delete,alter 权限;必须保证该表row movement,否则提示因为未启用行移动功能,不能闪回表。这时 alter table test enable row movement,即可保证表 row movement 例:执行将test表闪回到2008年12月25日下午19点。sql>flash

6、back table test to timestamp to_times(amp('20()8 12-25 19:52:0()tyyyymm-dd hh24:mi:ss,);闪回删除-flashback drop闪回删除特性提供了恢复被意外删除的表(或索引)而不丢失最近事务的一种手段。在 oracle 10g中,在删除一个表时,oracle并不立即丢弃它。而是把它放在冋收站中列出该表 以及其依赖的对象,并保留尽可能长的时间。如果你很快意识到自己犯了错误,可以简单的 使用一些命令即可找回被你删除的表。sql> conn rocky/rocky已连接。sql> select

7、* from emp;eidnamesex idaabbb 11sql> drop table emp;表已删除。sql> select * from emp; select * from emp*第1行出现错误:ora-00942:表或视图不存在sql> flashback table emp to before drop;闪回完成。sql> select * from emp;eidnamesex idaabbb 11sql>这样就可对误删除表进行恢复;闪回如何工作?在oraclelog z前,执行drop table命令将导致表以及其所有依赖对象立即被删除,

8、并 且表段中所有相关的空间都被释放回数据库。在oraclelog中,表及其依赖对象不会被立即删除,而是被重命名了,他们仍然保留在原位 置,oracle将根据空间紧迫情况尽可能长的保留它们。在oraclelo屮,有一个冋收站的概 念:回收站是一个逻辑容器(一个数据字典表,它保存被删除的表的相关信息,如它们的新 名字和原来的名字等)信息。sql> desc recyclebin;通过上述命令可以看到回收站的系统字段如果想查看回收站中的内容可以使用sql> select object_name,droptime,dropsen,purge_object from recyclebin;o

9、bject.namedroptimedropscn purge_objectbin$ugr+dcx2r i kk6imz2weqoq=$0 2007-08-10:21:33:43545676254660在oraclelog release 2版本屮,可以使用recyclebin初始化参数关闭闪回删除功能。默 认是,此参数设置为on,表示所有删除的表都要进入回收站,可以利用闪回删除特性恢复 它们。通过设置此参数的值为off,关闭闪回删除特性,表在被删除后不进入回收站。 如果需要真正的删除掉一张表,那就需要清空回收站。u用户使用purge命令(drop table purge

10、)从回收站中永久删除对象uoracle迫于空间压力(如果oracle在表空间中没有足够的可用空间创建新对彖或不能为现有对象扩展更过空i'可吋)自动删除回收站中的对象。如果需要真正删除表sql> drop table emp purge;表已删除。sql> select object_name,droptime,dropsen,purge_object from recyclebin;object_namedroptimedropscnpurge_object这样就找不到表了。我们在删除的同时,也从冋收站情况了它。什么是回收站?回收站是一个逻辑结构,一个名为recyclebi

11、n的数据字典。你可以通过 user.recyclebin视图,查看自己在回收站中当前登记的内容。或者通过dba_recyclebin视图也可以查看回收站中的内容sql> select owner9original_name,object_name,ts_name,droptime from dba_recyclebin;ownerobject nameoriginal_namets namebonussalgradescottbin$ftnagvfjs6k7olxgnemsfg=$0 usersscottbin$mytqyz98sn6oi6iampa4la=$0 users可以看到,当一

12、个表被移动到回收站,oracle给他指派一个系统生成的名字,此名字通常有 30个字符长。如果你相在冋收站屮查询一个对象,则必须使用用其系统生成的名字,扩在 双引号中:sql> select * from nbin$ftnagvfjs6k7olxgnemsfg=$0h;mlm2n1abcdefabcdef defgdbbeaxyzhyk xyzabc hykdddd hykddddsql>注意:冋收站屮的对象只能进行查询,任何的dml操作将不起作用。恢复被删除的表只要回收站屮列出被删除的表,就可以使用命令恢复它。flashback table table_name to before

13、 drop在恢复z后,oracle将把它们从回收站中删除。永久删除表在删除表示使用命令还可以使用purge table或者purge index命令从回收站中永久除去以前删除的表或 索引。可以使用purge tablespace命令从回收站中删除作为相应表空间成分的所有对象,如:purge tablespace users user scott还有:清除整个回收站:purge recyclebin除回收站中的单个表:purge table test_drop上述命令将从users表空间中删除单一用户scott的所有对象(以及存在于其他表空间中的 所有依赖对象)。必须的权限为使用 flashba

14、ck table table_name to before drop 命令取冋一个表,你必须 拥有它或者在具有此表的删除权限(drop tablespace或者drop any table)。为使 用purge命令,需要类似的权限。为了查询冋收站屮的对象,必须具有select权限和 flashback 权限。闪回数据库闪回数据库的条件1、数据库日志系统必须在归档模式下。2、如果丢失了一个数据文件,或者由于某种原因不能使用特定的数据文件,则不能使用 闪回数据库进行恢复。3、如果已经在想闪冋的时间范围内复原或重建了一个控制文件,则不能使用闪冋数据库 特性。4、不能闪回一个数据库到resetlogs

15、操作之前。5、不能闪回在被闪回表操作覆盖的时间范围内缩短或删除的数据文件。在oraclelog +,闪回数据库功能恢复数据文件但不需要备份的数据文件,他只能使用部分 归档重做h志信息。闪回数据库操作将数据库的所有数据文件倒退到以前的某个特定的时间 点。oracle flashback database(闪回数据库)特性允许通过sql语句flashback database语句,让 数据库前滚到当前的前一个时间点或者scn,而不需要做时间点的恢复。闪回数据库可以 迅速将数据库回到误操作或人为错误的前一个时间点,如word中的”撤消“操作,可以不利 用备份就快速的实现基于时间点的恢复。oracle

16、通过创建新的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

17、sen xxxflash version queiyoracle flashback version query特性,利用保存的冋滚信息,可以看到特定的表在时间段内 的任何修改,如电影的冋放一样,可以了解表在该期间的任何变化。flashback version query 一样依赖于aum,提供了一个查看行改变的功能,能找到所有已经提交了的行的记录,分 析出过去吋i'可都执行了什么操作。flashback version query采用versions between语句 來进行查询,常用的方法:versions_scn系统改变号versions_timestamp -时间例如:在te

18、st表中,时间1插入一条记录,时间2删除了这条记录,对于时间3执行select * from test当然查询不到这条记录,只能看到该表最后的提交记录。这时如果利用flash table 或者是flash query,只能看到过去的某一时间点的一个快照,而利用flashback version query,能够把吋间1、吋i'可2的操作给记录下来,并详细的查询出对表进行的任何操作。sql>select versions_starttime,versions_endtime, versions_x id, versions_operation from test versionsb

19、etween timestamp minvalue and maxvalueorder hy versions_starttime;在上述查询中,列versions_starttime> versions_endtime、versions_xid、versions_operation 是伪歹!j,还有一些伪 列,如versions_startscn和versions_endscn显示了该时刻的系统更改号。列versions_xid显 示了更改该行的事务标识符。当然,除了分析以上所有的变更之外,可以根据需要指定时间段,如显示在2008-12-25时 间在15:30到16:30之间test表

20、的所有变更。sql>select id from testversions between timestamp to_date(42008-l2-2515:30:00','yyyy-mm-dd hh24:mi:ss,) and to_date(42008-12-25 16:30:00','yyyymmdd hh24:mi:ss')flashback transaction queryoracle flashback transactionquery特性确保检查数据库的任何改变在一个事务级别,可以利用此功能进行诊断问题、性 能分析和审计事务。它其实是

21、flashback versionquery 查询的一个扩充,flashback versionquery说明了可以审计一段吋间内表的所有改变,但是也仅仅是能发现问题,对于错误的事 务,没有好的处理办法。而flashback transactionquery提供了从flashback_transaction_query视图中获得事务的历史以及 undo_sql (回滚事务对应的sql语句),也就是说审计一个事务到底做了什么,甚至可以回 滚一个已经提交的事务。例:flashback transaction query 的操作实例。(1)在test表中删除记录,获得事务的标识xid,然后提交。sql>delete from test wh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论