oracle数据库执行闪回恢复数据_第1页
oracle数据库执行闪回恢复数据_第2页
oracle数据库执行闪回恢复数据_第3页
oracle数据库执行闪回恢复数据_第4页
oracle数据库执行闪回恢复数据_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

Oracle10g闪回操作引言问题:前一段有一毕业学生问我一个问题:不小心执行了一个update操作,把公司一个非常关键的表中某列数据全部改成了某个值。如果我把某个表误删除了,应该怎么办?如果想让整个数据库恢复到某个时间点,应该怎么办?据调查约40%的系统问题是人为的错误引起的,这些人为的错误又特别难以避免。传统上当发生数据丢失、数据错误问题时,解决的主要方法就是数据的导入/导出、备份/恢复技术。这些方法都需要发生数据错误之前有一个正确的备份,才能进行恢复。恢复时不取决于错误程度,而只取决于备份/恢复策略。这种方法既耗时又使数据库系统不能提供服务,对于一些用户偶然地删除数据这类小错误来说显得有些“大材小用”。那么如何来恢复这种偶然的错误操作造成的数据丢失呢?从Oracle9i开始提供了闪回功能,可用于恢复错误的DML操作。在Oracle10g中对闪回功能做了较大改进,不再局限于闪回查询,还可用于恢复错误的DDL(Drop)操作、闪回表、闪回数据库等。闪回技术:优点闪回技术的革命性:对于意外导致数据破坏的造作,可以使用更简单方法恢复。传统修复技术耗时长.整个数据库的数据文件需要恢复,包括未丢失文件.需要所有日志文件.闪回操作迅速.行和事务的变更由索引控制.只恢复改变的数据.闪回命令简易.不需要复杂的修复步骤.闪回各种错误闪回将数据库恢复到先前的时间点.闪回表将表内容修复到过去某个时间,不需要备份文档.闪回Drop操作恢复整张被意外删除的表.闪回数据库:概述闪回数据库操作:将数据库’反卷’到过去某个时间点可以用来恢复用户逻辑错误数据库逻辑损坏数据库返回到以前状态按下’返回’键用户错误操作.如何启用Oracle10g闪回数据库特性默认数据库闪回操作没有打开1.确认当前模式

SQL>selectflashback_onfromv$database;

2.检查/修改恢复区设置

SQL>showparameterdb_recovery_file_dest

3.检查/修改闪回时间设置

SQL>showparameterdb_flashback_retention_target

SQL>altersystemsetdb_flashback_retention_target=1440;

4.重新启动数据库到Mount状态

启动flashbackdatabase选项。

SQL>shutdownimmediate;

SQL>startupmount;

SQL>alterdatabaseflashbackon;

--可以看到,flashback还必须要归档的保证应该先执行archiveloglist;

alterdatabasearchivelog;SQL>alterdatabaseopen;准备测试数据Selectsysdatefromdual;Altersessionsetnls_date_format=‘yyyy-mm-ddhh24:mi:ss’;SELECTOLDEST_FLASHBACK_SCN,OLDEST_FLASHBACK_TIMEFROMV$FLASHBACK_DATABASE_LOG;--通过以上SQL我们可以知道,可以前滚恢复到的最早的SCN与时间点是多少,如果没有确保flashbackdatabase,该视图将没有查询结果。selectsysdatefromdual;

createtablesjh1asselect*fromdba_users;selectsysdatefromdual;

进行闪回操作shutdownimmediate;

startupmount

altersessionsetnls_date_format='yyyy-mm-ddhh24:mi:ss';SELECTOLDEST_FLASHBACK_SCN,OLDEST_FLASHBACK_TIMEFROMV$FLASHBACK_DATABASE_LOG;flashbackdatabasetotimestampto_timestamp('2009-03-2517:01:55','yyyy-mm-ddhh24:mi:ss');alterdatabaseopenreadonly;descsjh0;

alterdatabaseclose;进行闪回操作flashbackdatabasetotimestampto_timestamp(‘2009-03-2517:03:18’,‘yyyy-mm-ddhh24:mi:ss’);--闪回到创建表之后时间点alterdatabaseopen;alterdatabaseopenreadonly;alterdatabasedismount;startupmount;

shutdownimmediatestartupmount;

alterdatabaseopen;

alterdatabaseopenresetlogs;descsjh0

闪回数据库:节省恢复时间BackupUsererrorApplylogs

forwardRestorefilesGeneratelogsRepaired

databaseIncompleteRecoveryBackupUser

errorApplyFlashbacklogsbackwardFlashbacklogsRepaired

databaseFlashbackDatabase闪回数据库:注意事项当闪回数据库操作完成后,数据库应该在下列方式下打开:在只读方式下验证当前数据库的状态是否正确读写方式下,打开使用RESETLOGS参数闪回数据库:局限以下情况不可以使用闪回:旧控制文件被恢复或重新建立.表空间被删除.数据文件被减小.PresentFlashbacktargettimeDroptablespace.Shrinkdatafile.Re-createcontrolfile.允许数据库闪回(EM)闪回表:概述闪回表操作将表恢复到某个特定时间.闪回表操作是在线操作.数据库保持打开状态.UserErroneous

DMLsFlashedback

tables闪回表使用闪回表操作,可以将表恢复到某个时间而不需要备份资料.执行闪回操作是,数据从undo表空间中提取.用户需要FLASHBACK

TABLE权限.需要行可移动特征允许表的行可移特征ALTERTABLEemployeesENABLEROWMOVEMENT;执行闪回表操作FLASHBACKTABLEhr.employeesTOTIMESTAMP TO_TIMESTAMP('2005-05-05

05:32:00', 'YYYY-MM-DD

HH24:MI:SS');闪回表开始闪回,表要有行移动的特性ALTERTABLEscott.emp1ENABLEROWMOVEMENT;闪回的15分钟前,或者指定的scn号码FLASHBACKTABLEscott.emp1TOTIMESTAMP(SYSDATE-1/96);FLASHBACKTABLEscott.emp1TOscn(1349117);闪回表操作:注意事项FLASHBACK

TABLE命令是单一事务,自动获得排它DML锁.对象的统计信息不能闪回.当前索引和依赖对象被保留.闪回表操作局限与特性:不能对系统表进行闪回不能横跨DDL操作操作细节写入alertlog文件中闪回Drop:概述DROPTABLEemployees;FLASHBACKTABLE

employees

TOBEFOREDROP;错误产生Recycle

Bin闪回dropOracle10g提供了flashbackdrop的功能。而在以前的版本中,通常只能进行不完全恢复。Oracle10g的flashbackdrop功能,允许你从当前数据库中恢复一个被drop了的对象,在执行drop操作时,现在Oracle不是真正删除它,而是将该对象自动将放入回收站。对于一个对象的删除,其实仅仅就是简单的重命名操作。所谓的回收站,是一个虚拟的容器,用于存放所有被删除的对象。在回收站中,被删除的对象将占用创建时的同样的空间,你甚至还可以对已经删除的表查询,也可以利用flashback功能来恢复它,这个就是flashbackdrop功能。回收站内的相关信息可以从recyclebin,user_recyclebin,dba_recyclebin等视图中获取,或者通过SQL*Plus的showrecyclebin命令查看。

在EnterpriseManager中执行闪回DROP操作Dependentbitmapindex

willalsobeflashedback.闪回dropcreatetablet_userasselect*fromdba_users;--如果是sys用户selectcount(*)from

t_user;droptable

t_user;showrecyclebin;

--sysdba的drop操作不会被记录。Conn

scott/oraclecreatetablet_userasselect*fromdba_users;

selectcount(*)from

t_user;droptable

t_user;Desc

t_usershowrecyclebin;flashbacktablet_usertobeforedrop;Desc

t_userselectcount(*)from

t_user;showrecyclebin;purgetablet_user;

--从回收站清除。showrecyclebin;droptablet_userpurge;

--彻底删除一个表,不让进入回收站。showrecyclebin;--没有对象。闪回Drop:注意事项闪回Drop表在以下情形下失效:SYSTEM表空间的表使用fine-grained审计或VirtualPrivate数据库数据字典表表由于表空间不够被主动或被动删除以下依赖性不被保护:Bitmap-join索引MaterializedviewlogsReferentialintegrity键删除索引在表删除之前闪回dml查询Oracle10g对于闪回查询进行了增强,支持更简单的SQL操作,允许对误删除、误更新等DML操作进行闪回。createtablet_userasselect*fromdba_users;selectcount(*)fromt_user;Deletefromt_user;Commit;Selectcount(*)fromt_user;selectdbms_flashback.get_system_change_numberfromdual;Conn/assysdbaselectdbms_flashback.get_system_change_numberfromdual;selectcount(*)fromt_userasofscn1388190;Connscott/oracleselectcount(*)fromt_userasofscn1388193;selectcount(*)fromt_userasofscn1388190;--在scn1388190的时刻数据都还在。insertintot_userselect*fromt_userasofscn1388190;selectcount(*)fromt_user;--数据返回闪回查询:概述t1t2SELECTemployee_id,salaryFROMemployeesASOFTIMESTAMPt1WHEREemployee_id=200EmployeesEmployeesUnwanted

updates闪回查询:示例11:0011:10UPDATEemployeesSETsalary= (SELECTsalaryFROMemployees ASOFTIMESTAMPTO_TIMESTAMP('2005-05-04

11:00:00',

'yyyy-mm-dd

hh24:mi:ss') WHEREemployee_id=200)WHEREemployee_id=200EmployeesEmployeessalary=4,400Employeessalary=4,400salary=4,840使用FlashbackversionQuerycreatetablesjh0asselectusername,user_idfromdba_users;Descsjh0select*fromsjh0;

deletefromsjh0whereusername='SYS';DELETEFROMsjh0whereusername='SYSTEM';

UPDATEsjh0setuser_id=0whereusername='SJH';commit;updatesjh0setuser_id=1whereusername='SCOTT';commit;select*fromsjh0;

selectversions_starttime,versions_endtime,versions_xid,versions_operation,username,user_idfromsjh0versionsbetweentimestampminvalueandmaxvalue;

--下面我们利用VERSIONS_XID来查询undo语句,需要用到sys/system用户。最后利用这些undo来撤销不同版本的事物。SELECTUNDO_SQLFROMFLASHBACK_TRANSACTION_QUERYwhereXID='0A001700C0020000';SELECTUNDO_SQLFROMFLASHBACK_TRANSACTION_QUERYwhereXID='07000F00C5020000';

SEL

温馨提示

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

评论

0/150

提交评论