来自农村的老实娃
分类: Oracle
2007-08-02 10:56:54
误恢复所需的时间就相当于错误发生的时间。
闪回数据库
闪回数据库可快速地将某个 Oracle 数据库倒回至以前的时间,以便纠正由逻辑数据损坏或用户错误造成的任何问题。闪回数据库就像数据库的“倒退按钮”。
它提供数据库的时间恢复点,而无需首先恢复数据库备份。当您不再浪费时间从磁带恢复数据库备份时,数据库时间点恢复是快速的 通过使用闪回
数据库命令可以从 RMAN 和 SQL*Plus 访问闪回数据库的性能,其效果类似于常规的时间恢复点。它允许您将数据库返回到其近期的状态。
若要启用闪回数据库功能,用 DBA 配置闪回恢复区。快速恢复区在 Oracle 数据库
Oracle 在闪回恢复区内部自动创建和管理闪回日志。因为闪回恢复区配置了空间定额,闪回日志从属于这些磁盘空间限制。闪回日志的大小区别很大,这取决于在给定的闪回日志间隔期间数据库更改的读/写速度。程序块更改的副本被写入到闪回日志中。如果在一天之内,更新了 10% 的数据库程序块,则 24 小时闪回日志的大小为您的数据库大小的 1/10th。如果将数据库恢复到过去较早时期可能要求更多的磁盘空间,则 DBA 可能会动态地更改此磁盘定额。
Data Guard 提供了几种易于使用的方式来避免用户错误。闪回数据库即可用在主数据库上又可用在备份数据库上,以便快速地将数据库恢复到较早的时间点,这样就避免了用户错误。同时,如果管理员决定切换到备用数据库,但那些用户错误已被应用于备用数据库(也就是说,由于启用了实时应用特性),管理员将只需简单地将备用数据库闪回到某一安全的时间点。最后,管理员还有额外的选择,可以不在一个或多个备用数据库上使用实时应用特性,相反使重做数据在那些备用数据库上的应用延迟一段可配置的时间,这提供了一个防止这种用户错误或损坏的保护窗口。
启用闪回数据库的性能费用少于 2%。您可能不希望牺牲任何产品数据库的性能费用,而是实现一种平衡。如果能在数分钟而不是数小时内恢复数据库,则可以避免公司上百万美元的收益损失,您愿意将 2% 的资源用在闪回数据库上吗?
启用闪回数据库功能有以下几方面获益:
免去了恢复备份的时间。因为遇到了灾难性故障数据库无法运行时,导致业务受阻从而造成上百万美元的收益流失。
消除了备用数据库重做应用延迟闪回数据库无缝地与 Data Guard 集成。备用数据库现在能够快速而方便地闪回到过去的任意时间点,这样在应用重做过程中就不需要延迟。
意外错误纠正。闪回数据库提供了 Oracle 数据库的连续快照。数据库可以回退到 SCN 或时间戳。
闪回表
当发生人为错误或应用程序错误时,可能想将一个或更多个表格状态恢复至故障发生以前的时间点。闪回表使 DBA 能够将一个或一组表快速轻松并联机恢复到指定时间点。闪回表可在恢复表的同时自动保留其相关属性,如当前索引、触发器和限制,而无需 DBA 查找和恢复应用程序特有的属性。闪回表缓解执行更为复杂的时间点恢复操作的需求。以下命令将 ORDERS 和 ORDER_ITEMS 表闪回到 7 月 7 日下午 2:33。
FLASHBACK TABLE orders, order_items TO TIMESTAMP (
就像闪回查询,闪回表也依靠撤销数据恢复表。因此撤销数据必须可用,这样闪回表才能成功。自动撤销管理功能允许您指定利用 UNDO_RETENTION 初始化参数保留撤销数据的时间。通过使用此参数并适当地规定撤销表空间大小,DBA 能够控制使用闪回表的情况下可修复表的回退时间长短。
DBA 可以使用闪回表功能快速地从人为错误中恢复,它还可以用作自助服务的修复工具以便从意外修改或删除中恢复。应用程序开发人员可以将闪回表功能合并到他们定制的应用程序中。根据基于时间点对象的恢复可用性、快速恢复和使用方便,介质恢复时使用此工具将获益颇多。
闪回表
联机执行恢复操作。
将指定表中的所有数据恢复到时间戳或 SCN 说明的先前时间点。
自动恢复所有的表属性,例如索引、触发器以及应用程序所必需的内容,这些程序利用闪回的表才能发挥作用。
在分布式环境中维持远程状态。例如,所有应用程序要求的表修改都被闪回。
按照约束规定维持数据的完整性。Oracle 保留了所有从属对象和参考的完整性。
即使在闪回操作以后,仍然提供将其恢复到最初状态的能力。
闪回删除
对于用户和 DBA 来说意外删除对象始终都是一个问题。用户很快认识到了他们所犯的错误,但恢复这些删除的表、索引、约束和触发器等已经为时已晚,而且从以往来看也并非易事。在 Oracle 数据库
什么是回收站?
回收站是一个虚拟容器,所有被删除的对象都驻留在这里。在封面的下面,这些对象占据与当创建它们时所占据相同的空间。如果在 USERS 表空间中创建表 EMP,那么删除的表 EMP 保留在 USERS 表空间中。并不移动删除的表和任一相关对象(如索引、约束、嵌套表和其他相关对象),仅对它们进行重命名,使其前缀为 BIN$$。可以继续访问删除表中的数据,甚至可以依据删除表使用闪回查询。
在删除回收站对象前,每个用户对回收站对象都拥有相同的权利和权限。可以通过查询新回收站视图来查看删除表。回收站中的对象将保留在数据库中,直到删除对象的所有者决定使用新清除命令永久性删除这些对象。按用户的定额计数回收站对象。但闪回删除是一种非破坏性功能。将通过空间恢复过程自动清除回收站中的对象,如果
用户创建新表或添加导致其超出定额的数据。
表空间需要扩展其文件大小,以适应创建/插入操作。
是否删除错误表?当然。使用闪回删除将其快速取回。
闪回查询
随 Oracle9i 一起引入的 Flashback Query 提供了查看存在以前状态数据的能力。默认情况下,数据库上的操作使用最近提交的可用数据。如果希望查
询过去某时状态中的数据库,那么,可以使用闪回查询功能进行此项操作。此功能可以指定时间或系统更改编号 (SCN) ,并使用提交的数据从相关时间中进行查询。
当使用自动撤消管理时,闪回查询机制最有效。Oracle 数据库将撤消操作当作第一等级的数据库对象。撤消操作具有持续性,可以使数据库系统继续有效,也可以崩溃或关闭数据库系统。为获取更佳性能,它还与其他数据库对象分享数据库缓冲存储器。Oracle 数据库使用超出事务处理提交范围的撤消操作,提供长期运行查询的读取一致性,并从逻辑损坏中恢复。
Oracle 数据库提供了直接指定为保留而进行的撤消数量的方法。此系统自动回收过期的撤消操作,以为新事务处理生成撤消提供空间。撤消保持值的选择依赖于长期运行查询的长度以及逻辑损坏的恢复需求。然而,用户可以不选择指定的撤消保持,以及允许系统为指定的撤消空间提供最佳保持。此最佳保持考虑到长期运行查询以及从逻辑损坏中恢复的最佳可能范围。并不保证默认的撤消保持。如果用尽用于现行事务处理的过期撤消,那么,系统可以使用最早的未过期撤消操作。
如果将 UNDO_RETENTION 设置为大于 5 天,那么,Oracle Database
以下描述了确保数据库可以使用依赖于撤消操作的闪回查询和其他闪回功能所需要的步骤。这包括
1. 确保数据库使用作废的表空间。将 UNDO_MANAGEMENT 初始化参数设置为自动指定。
2. 为 UNDO_RETENTION 初始化参数设置数值,此数值可使撤消操作保持一段时间,以允许最长的查询及时返回,或从人为错误中恢复。
3. 为保证不覆盖未到期的撤消操作,请为作废的表空间设置 RETENTION GUARANTEE 子句。
闪回查询的唯一功能是可以查看处于过去状态的数据,然后正确选择如何处理此信息,可能要进行一项分析,撤消此更改或捕获更改的数据,以备以后处理。闪回查询机制非常灵活,可以用于很多场合。可以
查询存在于过去状态中的数据。
将当前数据比作过去的数据。可以比较单独行或进行更复杂的比较,如查找交集或合并。
恢复已删除或更改的数据。
使用日期或时间标记值及时指定某点,或记录系统更改编号。
闪回版本查询
闪回版本查询提供了审核表行并检索有关更改行事务处理信息的方法。它检索所有提交的行版本,这些行位于或曾经位于发布查询的时间和过去某一时间点之间。它通过利用自动撤消管理完成此项操作。
闪回版本查询是 SQL 的扩展,可用于在指定表中检索不同行的版本,此表存在于特定时间段内。对于任一指定的表,每次执行 COMMIT 语句时,都会创建一个新行版本。闪回版本查询返回存在于指定时间段内的每个行版本的行。
使用框中上述实例表示的 SELECT 语句的 VERSIONS BETWEEN 从句调用闪回版本查询功能。它看上去像除新附加列以外的任一其他 SQL 查询。有四种新的伪列,它们提供了关于行数据事务处理的详细信息,此行数据允许 DBA 查明 Oracle 数据库中数据更改的时间和方式。
VERSIONS_XID – 此行版本创建的事务处理标识
VERSIONS_OPERATION – 创建此行版本的操作,如删除、插入和更新。
VERSIONS_STARTSCN – The SCN 此行版本首先在基中发生。
VERSIONS_STARTSCN – The SCN 此行版本首先在基中更改。
闪回版本查询是 DBA 运行分析和回答问题(如何发生这些情况是?)的强大工具。DBA 不仅可以运行手动分析,而且闪回版本查询还是应用程序开发人员的强大工具。可以创建用于审核目的的自定义应用程序。并不是每个人都能够真正解释他/她的操作。
闪回事务查询