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

读书笔记整理十一:使用闪回和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新功能


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值