您的位置:首页 > 数据库 > Oracle

读书笔记整理十一:使用闪回和LogMiner

2012-08-05 21:14 141 查看
读书笔记整理十一:使用闪回和LogMiner

闪回数据归档比较

闪回数据归档技术与闪回数据库的比较:

? 使用闪回数据归档可以访问任意时间点的数据,而不会实际更改当前数据。这与闪回

数据库相反,闪回数据库会使数据库实际返回到某个时间点。

? 必须启用跟踪才能访问历史记录,而闪回数据库需要预配置。闪回数据库属于脱机操

作,需要资源。闪回数据归档属于联机操作(历史记录访问与当前访问无缝共存)。

由于使用了新的后台进程,所以它对现有的进程几乎没有影响。

? 闪回数据归档在表级别启用,而闪回数据库只能在数据库级别运行。

? 使用闪回数据归档,可以返回到一个表的不同行或多个不同表的多个不同时间点,而

使用闪回数据库则只能返回到特定调用的一个时间点。

闪回数据归档:概览

闪回数据归档是一种历史记录数据存储。Oracle Database 11g 通过新的闪回数据归档后台

进程FBDA 自动跟踪和归档启用了闪回数据归档的表中的数据。使用此功能可满足超过还

原保留期的长期保留要求。闪回数据归档可确保闪回查询能够获得对数据库对象版本的

SQL 级别访问权限,而不会出现快照太旧的错误。

闪回数据归档由一个或多个表空间(或其中的几部分)组成。您可以拥有多个闪回数据归

档。每个闪回数据归档都具有特定的保留持续时间。您应根据保留持续时间的要求创建不

同的闪回数据归档,例如,为必须保留一年的所有记录创建一个闪回数据归档,为必须保

留两年的所有记录创建另一个闪回数据归档等。

FBDA 将异步收集原始数据并将其写入闪回数据归档。它并不包括原始索引,因为检索历

史记录信息的模式与检索当前信息的模式可能大不相同。

注:您可能需要针对历史记录查询持续时间创建适合的索引。

闪回数据归档:工作流

第一步是创建闪回数据归档。闪回数据归档由一个或多个表空间组成。您可以拥有多个闪

回数据归档。

第二步是为系统指定默认的闪回数据归档,该步骤是可选的。闪回数据归档配置有保留时

间。将在此保留时间内保留在闪回数据归档中归档的数据。

在第三步中,可以对表先启用闪回归档(然后再禁用它)。对表启用闪回归档时,系统不

允许对该表执行某些DDL 语句。默认情况下,不对任何表启用闪回归档。

在第四步中,当查询的数据超过了可能的还原保留期时,会以透明方式重新编写该查询以

使用闪回数据归档中的历史记录表。

使用闪回数据归档

访问历史记录数据的基本工作流:

1. 创建闪回数据归档:CREATE FLASHBACK ARCHIVE fla1

TABLESPACE tbs1 QUOTA 10G RETENTION 5 YEAR;

2. 对FLA1 归档中的表启用历史记录跟踪:ALTER TABLE inventory FLASHBACK ARCHIVE fla1;

3. 查看历史记录数据:

SELECT product_number, product_name, count

FROM inventory AS OF TIMESTAMP TO_TIMESTAMP

('2007-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS');

闪回数据归档:方案

使用CREATE FLASHBACK ARCHIVE 语句创建闪回数据归档。

? 可以为系统指定默认的闪回数据归档(可选)。如果省略此选项,则以后仍可以将此

闪回数据归档指定为默认选项。

? 需要提供闪回数据归档的名称。

? 需要提供闪回数据归档的第一个表空间的名称。

? 可以确定表空间中闪回数据归档可以使用的最大空间量。默认设置是不受限制。如果

第一个表空间中的空间限额不是无限制的,则必须指定该值,否则会引发ORA-

55621。

? 需要提供保留时间(表的闪回数据归档数据的保留天数)。

创建并使用闪回数据归档的基本工作流只包含三个步骤:

1. 归档管理员创建名为fla1 的闪回数据归档,这最多占用10 GB 的tbs1 表空间,其

中的数据会保留五年。

2. 在第二步中,归档用户启用闪回数据归档。如果自动还原管理处于禁用状态,则在试

图修改表时会出现错误ORA-55614。

3. 第三步使用AS OF 查询显示所访问的历史记录数据。

配置默认闪回数据归档

使用默认闪回归档:

1. 创建默认闪回数据归档:CREATE FLASHBACK ARCHIVE DEFAULT fla2

TABLESPACE tbs1 QUOTA 10G RETENTION 2 YEAR;

2. 对表启用历史记录跟踪:

ALTER TABLE stock_data FLASHBACK ARCHIVE;

注:因为使用了默认的闪回数据归档,所以不需要提供闪回数据归档

名称。

3. 禁用历史记录跟踪:

ALTER TABLE stock_data NO FLASHBACK ARCHIVE;

配置默认闪回数据归档

在FLASHBACK ARCHIVE 子句中,可以指定将在其中存储表的历史记录数据的闪回数据

归档。默认情况下,系统没有闪回数据归档。在前面的示例中,为系统指定了默认闪回数

据归档。

可使用以下两种方式之一创建默认闪回归档:

? 在ALTER FLASHBACK ARCHIVE 语句的SET DEFAULT 子句中,指定现有闪回数

据归档的名称。

? 创建闪回数据归档时,CREATE FLASHBACK ARCHIVE 语句中包含DEFAULT。

可使用ALTER TABLE 命令对表启用和禁用闪回归档。可通过指定闪回数据归档名称将

内部归档表分配给特定闪回数据归档。如果省略了名称,将使用默认闪回数据归档。指定

NO FLASHBACK ARCHIVE 可禁用表归档。

维护闪回数据归档

1. 增加空间:

ALTER FLASHBACK ARCHIVE fla1

ADD TABLESPACE tbs3 QUOTA 5G;

2. 更改保留时间:ALTER FLASHBACK ARCHIVE fla1 MODIFY RETENTION 2 YEAR;

3. 清除数据:

ALTER FLASHBACK ARCHIVE fla1 PURGE BEFORE

TIMESTAMP(SYSTIMESTAMP - INTERVAL '1' day);

4. 删除闪回数据归档:

DROP FLASHBACK ARCHIVE fla1;

闪回数据归档:DDL 限制

对启用了闪回数据归档功能的表使用下述任一DDL 语句都

会导致错误ORA-55610:

? 执行以下任一操作的ALTER TABLE 语句:

– 删除、重命名或修改列

– 执行分区或子分区操作

– 将LONG 列转换为LOB 列

– 包括UPGRADE TABLE 子句(不管有无INCLUDING

DATA 子句)

? DROP TABLE 语句

? TRUNCATE TABLE 语句

查看闪回数据归档

可使用动态数据字典视图查看跟踪表和闪回数据归档元数据。要访问USER_FLASHBACK

视图,需要拥有表的所有权。对于其它视图,则需要拥有SYSDBA 权限。

示例:

? 查询闪回数据归档的创建时间:

SELECT FLASHBACK_ARCHIVE_NAME, CREATE_TIME, STATUS

FROM DBA_FLASHBACK_ARCHIVE;

? 列出闪回数据归档使用的表空间:

SELECT *

FROM DBA_FLASHBACK_ARCHIVE_TS;

? 列出特定表的归档表名称:

SELECT ARCHIVE_TABLE_NAME

FROM USER_FLASHBACK_ARCHIVE_TABLES

WHERE TABLE_NAME = 'EMPLOYEES';

无法从动态性能(V$) 视图中检索过去的数据。对此类视图中的查询总是返回当前数据。

不过,您可以在静态数据字典视图(如*_TABLES)中对过去的数据执行查询。

标准和使用提示

? 查询过去的数据前执行COMMIT 或ROLLBACK

? 使用当前的会话设置

? 使用DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER

函数获取SCN

? 使用以下公式计算过去的某个时间:

(SYSTIMESTAMP - INTERVAL '10' MINUTE)

? 在要求一定精度(时间戳的粒度为三秒)的情况下使用系

统更改号(SCN)。

标准和使用提示

? 为了确保数据库的一致性,应始终在查询过去的数据前执行COMMIT 或ROLLBACK

操作。

? 请记住,所有闪回处理都使用当前的会话设置(如国家语言和字符集),而不使用查

询时生效的设置。

? 要获得稍后与闪回功能一起使用的SCN,可以使用

DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER 函数。

? 要计算或检索查询中使用的过去某个时间,请使用函数返回值作为时间戳或SCN 参

数。例如,将SYSTIMESTAMP 函数的值加上或减去一个INTERVAL 值。

? 要查询某个精确时间的过去数据,请使用SCN。如果使用时间戳,查询的实际时间可

以比指定的时间最多早3 秒。Oracle DB 在内部使用SCN 并将其映射到粒度为3 秒的

时间戳。

闪回事务处理

? 可使用Enterprise Manager 或命令行闪回事务处理。

? EM 使用闪回事务处理向导,该向导使用NOCASCADE

选项调用DBMS_FLASHBACK.TRANSACTION_BACKOUT

过程。

? 如果PL/SQL 调用成功完成,即意味着事务处理不具有

任何相关性,并且已成功回退单个事务处理。

使用LogMiner

? Oracle DB 中功能强大的审计工具

? 直接访问重做日志

? 用户界面:

– SQL 命令行

– 图形用户界面(GUI)

? 与Enterprise Manager 集成

使用LogMiner(续)

LogMiner 支持以下操作:

? 指定查询参数

? 停止查询并显示部分结果(如果查询耗时太长)

? 部分查询,然后显示估计的完整查询时间

? 保存查询结果

? 根据初始结果重新挖掘或细化查询

? 显示事务处理详细信息、相关性和校正“还原”SQL 脚本

? 闪回并提交事务处理

----------------------整理自11g新功能
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息