14-第14章:闪回技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
管 理 基 础
第14章 闪回技术
朱广强 zgq007@
主要内容
闪回技术概述 闪回技术查询 闪回版本查询 闪回表 闪回事务查询 闪回数据库 闪回数据归档
2
闪回技术概述
flashback( 闪 回 ) 是 Oracle10g 里 新 加 入 的 一 个 非 常 有 用 的 一 个 特 性 。 Oracle数据库10g提供了五个新的闪回功能:闪回版本查询,闪回事务查询,闪 回删除,闪回表和闪回数据库。Oracle数据库11g提供了一个有趣的新的闪回功 能:闪回数据存档,它允许一个Oracle数据库管理员维护一个记录,对指定时 Nhomakorabea9
闪回删除(Flashback Drop)
闪回删除(Flashback Drop) 使用 Oracle Database 11g中的闪回表特性,可以毫不费力地恢复被意外删除的表。 如果用户或DBA意外地删除了一个非常重要的表,需要尽快地恢复。虽然Oracle 9i D atabase 推出了闪回查询选项的概念,以便检索过去某个时间点的数据,但它不能闪回 DDL 操作,如删除表的操作。唯一的恢复方法是在另一个数据库中使用表空间的时间点 恢复,然后使用导出/导入或其他方法,在当前数据库中重新创建表。这一过程需要 DB A 进行大量工作并且耗费宝贵的时间,更不用说还要使用另一个数据库进行克隆。 现在使用 Oracle Database 11g中的闪回表特性,它使得被删除表的恢复过程如同执行 几条语句一样简单。 闪回删除可恢复使用DROP TABLE语句删除的表,是一种对意外删除的表的恢复机制。 闪回删除功能的实现主要是通过Oracle 11g数据库中的“回收站”(Recycle Bin)技术实现 的。 在Oracle 11g数据库中,当执行DROP TABLE操作时,并不立即回收表及其关联对象的 空间,而是将它们重命名后放入一个称为“回收站”的逻辑容器中保存,直到用户决定 永久删除它们或存储该表的表空间存储空间不足时,表才真正被删除。 注意:为了使用闪回删除技术,必须开启数据库的“回收站”。
13
要清除回收站中的对象,释放空间,有以下几种方式: (1)使用PURGE TABLE original_table_name。 这里的original_table_name表示表在drop以前的名称(源名称),使用该操作可以从 回收站中永久地删除对象并释放空间。 (2)使用PURGE TABLE recyclebin_object_name。 这里的recyclebin_object_name表示回收站中的对象名称,使用该操作可以从回收站 中永久地删除对象并释放空间。 (3)使用PURGE TABLESPACE tablespace_name从回收站清除一个特定表空间的所有 对象。该命令从指定的表空间中清除所有的丢弃对象及相依对象。因为相依对象 (比如LOB、嵌套表、索引和分区等)未必与基表存储在同一个表空间,该命令会将 相依对象从其所在的表空间中进行清除。 (4)使用PURGE TABLESPACE tablespace_name USER user_name,会从回收站中清除 属于某个特定用户的所有丢弃对象(当然也包括基表的相依对象)。 (5)使用命令DROP USER user_name CASCADE直接删除指定用户及其所属的全部对 象。也就是说DROP USER命令会绕过回收站直接进行删除。同时,如果回收站中也有 该用户的所属对象,则也会从回收站中清除掉。 (6)使用PURGE RECYCLEBIN 命令可以清除用户自己的回收站。 该命令从用户回收站中清除所有的对象并释放与这些对象关联的空间。 (7)PURGE DBA_RECYCLEBIN从所有用户的回收站清除所有对象。 该命令能高效地完全清空回收站,当然执行该命令必须具有SYSDBA系统管理权限才 可以。
4
闪回数据库(Flashback Database)
闪回数据库概述 闪回数据库技术是将数据库快速恢复到过去的某个时间点或SCN值时的状态, 以解决由于用户错误操作或逻辑数据损坏引起的问题。这对于数据库从逻辑错 误中恢复特别有用,而且也是大多数逻辑损害时恢复数据库的最佳选择。 闪回数据库操作不需要使用备份重建数据文件,而只需要应用闪回日志文件 和归档日志文件。Oracle系统为了使用数据库的闪回功能,特别创建了另外一 组日志,就是Flashback_logs(闪回日志),记录数据库的闪回操作。为了使用 数据库闪回技术,需要预先设置数据库的闪回恢复区和闪回日志保留时间。闪 回恢复区用于保存数据库运行过程中产生的闪回日志文件,而闪回日志保留时 间是指闪回恢复区中的闪回日志文件保留的时间,即数据库可以恢复到过去的 最大时间。 使用闪回数据库恢复比使用传统的恢复方法要快得多,这是因为恢复不再受 数据库大小的影响。也就是说,传统的恢复时间(MTTR)是由所需重建的数据 文件的大小和所要应用的归档日志的大小决定的。而使用闪回数据库恢复,恢 复时间是由恢复过程中需要备份的变化的数量决定的,而不是数据文件和归档 日志的大小。
8
闪回表(Flashback Table)
使用闪回表 闪回表的语法:
FLASHBACK TABLE [schema.]<table_name> TO {[BEFORE DROP[RENAME TO table]] [SCN|TIMESTAMP]expr[ENABLE|DISABLE]TRIGGERS};
3
闪回技术概述
在Oracle 11g中,闪回技术可以具体分为以下几种。 闪回查询(Flashback Query):查询过去某个时间点或某个SCN值时表中的 数据信息。 闪回版本查询(Flashback Version Query):查询过去某个时间段或某个S CN段内表中数据的变化情况。 闪回事务查询(FlashbackTransaction Queq):查看某个事务或所有事务 在过去一段时间对数据进行的修改。 闪回表(Flashback Table):将表恢复到过去的某个时间点或某个SCN值时 的状态。 闪回删除(Flashback Drop):将己经删除的表及其关联对象恢复到删除前 的状态。 闪回数据库(Flashback Database):将数据库恢复到过去某个时间点或某 个SCN值时的状态。 闪回数据存档:它允许一个Oracle数据库管理员维护一个记录,对指定时 间范围内对所有表的的改变情况进行记录。
10
使用闪回删除 如果要对DROP过的表进行恢复操作,可以使用以下语句: SQL>FLASHBACK TABLE table_name TO BEFORE DROP 为了帮助读者理解回收站在使用中的操作过程,详见书中的回收站操作步骤。
11
闪回回收站(补充) 回收站(Recycle Bin)是所有丢弃表及其相依对象的逻辑存储容器。当 一个表被丢弃时(DROP),回收站会将该表及其相依对象存储在回收站中。 存储在回收站中的表的相依对象包括索引、约束、触发器、嵌套表、大的二 进制对象(LOB)段和LOB索引段。 Oracle回收站将用户所进行的DROP语句的操作记录在一个系统表里,即 将被删除的对象写到一个数据字典表中,确定是不再需要的被删除对象时, 可以使用PURGE命令对回收站空间进行清除。 (1)启动“回收站” 要使用闪回删除功能,需要启动数据库的“回收站”,即将参数RECYCL EBIN设置为ON。在默认情况下“回收站”已启动。 (2)查看“回收站” (3) 清除回收站 由于被删除表及其关联对象的信息保存在“回收站”中,其存储空间并 没有释放,因此需要定期清空“回收站”,或清除“回收站”中没用的对象 (表、索引、表空间),释放其所占的磁盘空间。 清除回收站语法为:
PURGE [TABLE table | INDEX index]| [RECYCLEBIN | DBA_RECYCLEBIN]| [TABLESPACE tablespace [USER user]] ;
12
管理回收站 (补充) 回收站是丢弃对象的逻辑存储容器,它以表空间中现有的已经分配的 空间为基础,这意味着系统并没有给回收站预留空间。这使回收站空间依 赖于现有表空间中的可用空间(也就是说丢弃表占据的空间仍然需要计入 表空间配额)。因此并不能总是保证丢弃对象在回收站中的最小时间。 如果不对回收站进行清除操作,丢弃对象会一直保存在回收站内,一直 到丢弃对象所属的表空间无法再分配新的存储区域,这种状态称之为空间 压力。有时,用户的表空间限额也会导致空间压力状态的出现,即使表空 间中仍然存在自由空间。 当空间压力出现时,Oracle会覆盖些回收站对象从而自动回收表空间。 Oracle根据先进先出的原则来选择丢弃对象进行删除,所以最先被丢弃的对 象也最先被清除。而对象的清除仅仅是为了解决产生的空间压力问题,所 以会尽可能清除少的对象来满足空间压力的要求。这样处理,既最大限度 地保证了对象在回收站中的可用时间,又减少了Oracle在事物处理时的性能 影响。
6
闪回表(Flashback Table)
闪回表概述
闪回表是将表恢复到过去的某个时间点的状态,为DBA提供了一种在线、 快速、便捷地恢复对表进行的修改、删除、插入等错误的操作。 与闪回查询不同,闪回查询只是得到表在过去某个时间点上的快照,并 不改变表的当前状态,而闪回表则是将表及附属对象一起恢复到以前的某个 时间点。 利用闪回表技术恢复表中数据的过程,实际上是对表进行DML操作的过 程。Oracle自动维护与表相关联的索引、触发器、约束等,不需要DBA参与。
7
闪回表(Flashback Table)
特性: 在线操作 恢复到指定的时间点(或者SCN)的任何数据 自动恢复相关属性 满足分布式的一致性 数据的一致性,所有相关对象将自动一致。 为了使用数据库闪回表功能,必须满足下列条件: 普通用户中需要有Flashback any table的系统权限。命令如: SQL>grant flashback any table to scott; 用户具有所操作表的select、insert、delete、alter对象权限; 数据库采用撤销表空间进行回滚信息的自动管理,合理设置UNDO_RETENT IOIN参数值,保证指定的时间点或SCN对应信息保留在撤销表空间中; 必须保证该表有row movement(行移动)特性,可以采用下列方式进行: ALTER TABLE table ENABLE ROW MOVEMENT;
5
闪回数据库(Flashback Database)
使用闪回数据库 要启用闪回数据库功能,还需要进行进一步的配置,需要注意如下几点: •配置闪回恢复区。 •数据库需要运行在归档模式下(Archivelog)。 •通过数据库参数DB_FLASHBACK_RETENTION_TARGET,来指定可以在多长时 间内闪回数据库。该值以分钟为单位,默认值为1440(1天),更大的值对 应更大的闪回恢复空间,类似于闪回数据库的基线。 •需要在MOUNT状态下使用ALTER DATABASE FLASHBACK ON 命令启动闪回数据 库功能。 在监控闪回数据库时,常用的有以下几个重要视图: •V$DATABASE,用于显示闪回数据库是启动还是关闭,即闪回数据库是否被 激活。 •V$ FLASHBACK_DATABASE_LOG,可用于查看与闪回数据库有关的SCN、TIME、 闪回数据库的时间及闪回数据的大小。 •V$FLASHBACK_DATABASE_STAT,显示闪回数据库日志的情况,可用来估算闪 回数据库潜在的需求空间。
间范围内对所有表的的改变情况进行记录。
flashback与recovery区别:
(1) recovery的恢复是基于数据文件的,先要restore备份好的数据文件,flashback是 基于flashback log文件的,所以基点不一样,recovery是基于备份的时间上的,可以恢 复到备份至完整归档的任何一个时刻,而flashback是基于flashback log的,而log的存 储时效是受限于db_flashback_retention_target这个参数的(以分钟为单位,默认1440 分钟,即24小时)。 (2) recovery的恢复是应用redo记录的,所以会对期间我们不关心的数据也进行修补, 而flashback可以只针对我们关心的数据进行修补。 (3) recovery的恢复可以恢复数据文件物理损坏或者日志物理损坏,而flashback是基于 flashback log的,只能处理由于用户的错误的逻辑操作,比如删除了表,删除了用户等。
其中的各项参数说明如下: schema:模式名,一般为用户名。 TO TIMESTAMP:系统邮戳,包含年、月、日、时、分、秒。 TO SCN:系统更改号,可从flashback_transaction_query数据字 典中查到,如flashback table SPMLloye TO SCN 3698893。 ENABLE TRIGGERS:表示触发器恢复以后为enable状态,而默 认为disable状态。 TO BEFORE DROP:表示恢复到删除之前。 RENAME TO table:表示更换表名。
相关文档
最新文档