OracleDatabase11g:面向管理员的新增功能11-2OracleDatabase11g:面向管理员的新增功能11-3闪回和LogMiner的新增功能和增强功能组织经常需要跟踪和存储在某个记录的生存期内对该记录进行的所有事务处理更改。现在不必再将此智能功能内置到应用程序中。闪回数据归档功能以安全的方式满足了长期保留需求(超过还原保留期)。使用OracleDatabase11g您可以闪回所选事务处理和所有相关事务处理。此恢复操作使用还原数据创建并执行相应的校正事务处理,使受影响的数据还原到其原始状态。闪回事务处理或“作业回退”只使用一个命令即可在保持数据库联机的同时,轻松并快速地回退某一特定事务处理或一组事务处理及其相关事务处理,从而提高了逻辑恢复期间的可用性。在早期版本中,管理员需要为LogMiner安装并使用单独的Java控制台。使用EnterpriseManager界面,管理员可以使用一个与闪回事务处理集成在一起的界面,因此少了一个安装任务。这些增强功能提供了基于任务的直观方法(通过EM图形化用户界面),或者降低了应用程序的复杂性,因此增强了易用性并节省了时间。OracleDatabase11g:面向管理员的新增功能11-4闪回数据归档:概览闪回数据归档是一个新的数据库对象,是存储历史记录信息的逻辑容器。它存储在一个或多个表空间中,跟踪一个或多个表的历史记录。您需要为每个闪回数据归档指定保留持续时间。可在闪回数据归档中按保留要求分组历史记录表数据。多个表可以共享相同的保留和清除策略。使用“OracleTotalRecall”选项,OracleDatabase11g得到了显著增强,它可以跟踪历史记录,同时保持性能受到的影响最小,并且可以使用压缩形式存储历史记录数据。此效率是使用您自己的触发器所无法达到的,这些触发器还需要花费时间和精力进行设置和维护。系统不允许执行使历史记录失效或阻止历史记录捕获的操作,例如删除或截断表。OracleDatabase11g:面向管理员的新增功能11-5闪回数据归档比较闪回数据归档技术与闪回数据库的比较:•使用闪回数据归档可以访问任意时间点的数据,而不会实际更改当前数据。这与闪回数据库相反,闪回数据库会使数据库实际返回到某个时间点。•必须启用跟踪才能访问历史记录,而闪回数据库需要预配置。闪回数据库属于脱机操作,需要资源。闪回数据归档属于联机操作(历史记录访问与当前访问无缝共存)。由于使用了新的后台进程,所以它对现有的进程几乎没有影响。•闪回数据归档在表级别启用,而闪回数据库只能在数据库级别运行。•使用闪回数据归档,可以返回到一个表的不同行或多个不同表的多个不同时间点,而使用闪回数据库则只能返回到特定调用的一个时间点。OracleDatabase11g:面向管理员的新增功能11-6闪回数据归档:概览闪回数据归档是一种历史记录数据存储。OracleDatabase11g通过新的闪回数据归档后台进程FBDA自动跟踪和归档启用了闪回数据归档的表中的数据。使用此功能可满足超过还原保留期的长期保留要求。闪回数据归档可确保闪回查询能够获得对数据库对象版本的SQL级别访问权限,而不会出现快照太旧的错误。闪回数据归档由一个或多个表空间(或其中的几部分)组成。您可以拥有多个闪回数据归档。每个闪回数据归档都具有特定的保留持续时间。您应根据保留持续时间的要求创建不同的闪回数据归档,例如,为必须保留一年的所有记录创建一个闪回数据归档,为必须保留两年的所有记录创建另一个闪回数据归档等。FBDA将异步收集原始数据并将其写入闪回数据归档。它并不包括原始索引,因为检索历史记录信息的模式与检索当前信息的模式可能大不相同。注:您可能需要针对历史记录查询持续时间创建适合的索引。OracleDatabase11g:面向管理员的新增功能11-7闪回数据归档:体系结构闪回数据归档后台进程(FBDA)随数据库启动。1.FBDA首先对缓冲区高速缓存中的还原数据执行操作。2.如果还原数据已不在缓冲区高速缓存中,FBDA也可以从还原段读取所需值。3.FBDA将合并启用了闪回归档的表中的修改行,并将其写入相应的历史记录表,这些表将组成闪回数据归档。您可以通过查询*_FLASHBACK_ARCHIVE_TABLES视图查找历史记录表的内部分配名称。历史记录表是压缩的数据,并已在内部进行了分区。数据库将在保留期到期后的第一天自动清除所有历史记录信息(删除数据,而不破坏闪回数据归档)。例如,如果保留期为10天,则会在每10天后的第一天删除最旧的信息,在归档中仅保留10天的信息。这是实现数字粉碎的一种方法。OracleDatabase11g:面向管理员的新增功能11-8准备数据库要启用闪回数据归档,请务必执行下列任务:为数据归档创建一个或多个表空间,并对“归档管理员”授予访问权限和适合的限额。同时,为归档管理员授予FLASHBACKARCHIVEADMINISTER系统权限,允许其执行下列语句:•CREATEFLASHBACKARCHIVE•ALTERFLASHBACKARCHIVE•DROPFLASHBACKARCHIVE要允许特定用户使用特定闪回数据归档,请为归档用户授予对该闪回数据归档的FLASHBACKARCHIVE对象权限。这样,归档用户可以使用特定闪回数据归档对表启用闪回归档。以归档管理员身份执行以下示例:GRANTFLASHBACKARCHIVEONFLA1TOHR;OracleDatabase11g:面向管理员的新增功能11-9准备数据库(续)用户很有可能会使用其它闪回功能。要允许在查询期间访问特定对象,请授予对查询涉及的所有对象的FLASHBACK和SELECT权限。如果用户需要访问DBMS_FLASHBACK程序包,则需要为他们授予对此程序包的SELECT权限。这样,用户就可以使用DBMS_FLASHBACK.ENABLE和DBMS_FLASHBACK.DISABLE过程来启用或禁用闪回数据归档。OracleDatabase11g:面向管理员的新增功能11-10准备数据库(续)OracleDatabase11g使用下列默认数据库初始化参数:•UNDO_MANAGEMENT='AUTO'•UNDO_TABLESPACE='UNDOTBS1'•UNDO_RETENTION=900换句话说,默认情况下启用自动还原管理。如果需要,请按《Oracle数据库管理员指南》中的说明启用自动还原管理。可自动扩展的还原表空间基于数据库安装而创建。•对于固定大小的还原表空间,OracleDB会自动优化系统,以便为还原表空间提供可能的最佳还原保留期。•对于可自动扩展的还原表空间(默认),OracleDB会保留还原数据,其保留时间至少满足运行时间最长的查询所需的保留期,以及UNDO_RETENTION参数指定的还原保留期阈值。使用固定大小的还原表空间,自动优化还原保留期通常会产生较好的结果。如果由于此原因或其它原因而希望将还原表空间更改为固定大小,还原指导可帮助您确定要分配的正确固定大小。OracleDatabase11g:面向管理员的新增功能11-11准备数据库(续)如果不能确定空间要求或者无法访问还原指导,请执行以下步骤:1.以可自动扩展的还原表空间开始。2.在一个业务循环(例如,1天或2天或更长时间)中观察它。3.使用V$UNDO_STAT视图收集还原块信息,计算空间要求,并使用它们创建大小适合的固定还原表空间(《Oracle数据库管理员指南》中提供了计算公式)。4.查询V$UNDOSTAT.TUNED_UNDORETENTION以确定对于当前还原表空间还原数据的保留持续时间。设置UNDO_RETENTION参数并不能保证未到期的还原数据不会被覆盖。如果系统需要较多的空间,OracleDB可以用最新生成的还原数据覆盖未到期的还原数据。-为还原表空间指定RETENTIONGUARANTEE子句,以确保不会丢弃未到期的还原数据。-为了满足超过还原保留期的长期保留要求,可创建闪回数据归档。OracleDatabase11g:面向管理员的新增功能11-12闪回数据归档:工作流第一步是创建闪回数据归档。闪回数据归档由一个或多个表空间组成。您可以拥有多个闪回数据归档。第二步是为系统指定默认的闪回数据归档,该步骤是可选的。闪回数据归档配置有保留时间。将在此保留时间内保留在闪回数据归档中归档的数据。在第三步中,可以对表先启用闪回归档(然后再禁用它)。对表启用闪回归档时,系统不允许对该表执行某些DDL语句。默认情况下,不对任何表启用闪回归档。在第四步中,当查询的数据超过了可能的还原保留期时,会以透明方式重新编写该查询以使用闪回数据归档中的历史记录表。OracleDatabase11g:面向管理员的新增功能11-13闪回数据归档:方案使用CREATEFLASHBACKARCHIVE语句创建闪回数据归档。•可以为系统指定默认的闪回数据归档(可选)。如果省略此选项,则以后仍可以将此闪回数据归档指定为默认选项。•需要提供闪回数据归档的名称。•需要提供闪回数据归档的第一个表空间的名称。•可以确定表空间中闪回数据归档可以使用的最大空间量。默认设置是不受限制。如果第一个表空间中的空间限额不是无限制的,则必须指定该值,否则会引发ORA-55621。•需要提供保留时间(表的闪回数据归档数据的保留天数)。创建并使用闪回数据归档的基本工作流只包含三个步骤:1.归档管理员创建名为fla1的闪回数据归档,这最多占用10GB的tbs1表空间,其中的数据会保留五年。2.在第二步中,归档用户启用闪回数据归档。如果自动还原管理处于禁用状态,则在试图修改表时会出现错误ORA-55614。3.第三步使用ASOF查询显示所访问的历史记录数据。OracleDatabase11g:面向管理员的新增功能11-14配置默认闪回数据归档在FLASHBACKARCHIVE子句中,可以指定将在其中存储表的历史记录数据的闪回数据归档。默认情况下,系统没有闪回数据归档。在前面的示例中,为系统指定了默认闪回数据归档。可使用以下两种方式之一创建默认闪回归档:•在ALTERFLASHBACKARCHIVE语句的SETDEFAULT子句中,指定现有闪回数据归档的名称。•创建闪回数据归档时,CREATEFLASHBACKARCHIVE语句中包含DEFAULT。可使用ALTERTABLE命令对表启用和禁用闪回归档。可通过指定闪回数据归档名称将内部归档表分配给特定闪回数据归档。如果省略了名称,将使用默认闪回数据归档。指定NOFLASHBACKARCHIVE可禁用表归档。OracleDatabase11g:面向管理员的新增功能11-15填充闪回数据归档空间用尽闪回数据归档中的空间后,FBDA及所有生成跟踪还原的前台进程会引发ORA-55617或ORA-55623错误。会增加一个预警日志条目,表明“闪回归档fla1已满,归档已挂起。\n”默认情况下,分配空间的使用率达到90%后即会发生此错误。示例:•55623,00000,FlashbackArchive\%s\isblockingandtrackingonalltablesissuspended//*Cause:Flashbackarchivetablespacehasrunoutofspace.//*Action:Addtablespaceorincreasetablespacequotafortheflashbackarchive.//•55617,00000,FlashbackArchive\%s\runsoutofspaceandtrackingon\%s\issuspended“//*Cause:Flashbackarchivetablespacequotaisrunningout.//*Action:Addtablespaceorincreasetablespacequotafortheflashbackarchive.注:此后,由于FBDA无法归档这些操作