DBA绝招之数据库闪回技术

第一部分: 使用闪回技术I

一、 什么是闪回技术

1、闪回技术介绍

2、事务处理和还原

3、保证还原保留时间

4、准备数据库以进行闪回

1) 创建还原表空间

2) 启用自动还原管理

3) 指定还原保留时间和保证还原保留时间

4) 默认的数据库初始化参数:

√ UNDO_MANAGEMENT='AUTO'

√ UNDO_TABLESPACE='UNDOTBS1'

√ UNDO_RETENTION=900

二、使用闪回查询及闪回版本查询

1、使用闪回技术查询数据

1) 闪回查询

√ 查询指定时间点的所有数据

2) 闪回版本查询

√ 查看两个时间点之间行的所有版本

√ 查看更改了行的事务处理

3) 闪回事务处理查询

√ 查看事务处理所做的所有更改

4) 闪回查询

√ 用于查询指定时间点的所有数据

5) 闪回查询:示例

6) 闪回版本查询

7) 闪回版本查询:注意事项

a) 不能使用 VERSIONS 子句查询:

√ 外部表

√ 临时表

√ 固定表

√ 视图

b) VERSIONS 子句不能跨 DDL 命令使用

c) 段收缩操作已过滤掉

三、执行闪回表操作

1、闪回表概览

1) 闪回表可将表恢复到特定的时间点

2) 闪回表是一个原位操作

3) 数据库保持联机

2、闪回表

1) 使用闪回表,可将一个或多个表还原到特定时间点,而不需要还原备份

2) 将从还原表空间检索数据来执行闪回表操作

3) 您需要具有对特定表的 FLASHBACK ANY TABLE 或FLASHBACK 对象权限

4) 需要对要闪回的表具有 SELECT、INSERT、DELETE和 ALTER 权限

5) 必须对要执行闪回操作的表启用行移动

3、对表启用行移动

4、执行闪回表

5、闪回表:注意事项

1) FLASHBACK TABLE 命令作为单个事务处理执行,要求获取 DML 排它锁

2) 不闪回统计信息

3) 保留当前索引和从属对象

4) 闪回表操作:

√ 不能对系统表执行

√ 不能跨 DDL 操作

√ 会生成还原和重做数据

四、使用闪回事务处理及查询

1、回事务处理查询

2、用 Oracle Enterprise Manager执行闪回事务处理查询

3、闪回事务处理查询:注意事项

1) DDL 命令被视为字典更新

2) 通过执行 DDL 命令对事务处理执行闪回事务处理查询时,会显示对数据字典所做的更改

3) 删除的对象显示为对象编号

4) 删除的用户显示为用户标识符

4、回事务处理

1) 建立闪回事务处理的先决条件

2) 逐步完成可能的工作流

3) 使用闪回事务处理向导

4) 查询有依赖关系及没有依赖关系的事务处理

5) 选择回退选项和闪回事务处理

6) 检查结果

5、先决条件

6、闪回事务处理

1) 可使用 Oracle Enterprise Manager 或命令行闪回事务处理

2) EM 使用闪回事务处理向导,该向导调用带 NOCASCADE选项的 DBMS_FLASHBACK.TRANSACTION_BACKOUT过程

3) 如果 PL/SQL 调用成功完成,即意味着事务处理不具有任何依赖关系,并且已成功回退单个事务处理

7、可能的工作流

1) 查看表中的数据

2) 发现逻辑问题

3) 使用闪回事务处理

√ 执行查询

√ 选择事务处理

√ 闪回事务处理(如果没有冲突)

√ 选择其它回退选项(如果存在冲突)

4) 回事务处理结果

8、闪回事务处理向导

9、选择其它回退选项

10、最后步骤(不使用 EM)

选择回退选项后,会在 DBA_FLASHBACK_TXN_STATE 和DBA_FLASHBACK_TXN_REPORT 视图中生成相关性报告

√ 检查显示了已回退的所有事务处理的相关性报告

√ 提交更改使其成为永久更改

√ 回退以放弃更改

第二部分:使用闪回技术II

一、使用 Oracle Total Recall

1、Oracle Total Recall 概览

自动跟踪数据库历史更改:

√ 在您指定的保留期内在表级别启用

√ 所有后续更改都是透明存储的并能够防止篡改

√ 早于保留期的记录会被自动删除

√ 使用闪回技术检索历史记录

2、设置过程

1) 创建用于保存 FDA 的新表空间。

2) 使用 FLASHBACK ARCHIVE ADMINISTER 系统权限:创建闪回数据归档,将它分配到表空间,并指定其保留期

3) 使用 FLASHBACK ARCHIVE 对象权限:变更基表以启用归档并将其分配到一个闪回归档

3、Total Recall的工作原理

1) 历史数据

√ 后台进程以自优化间隔(默认:5 分钟)

2) 异步捕获行

√ 是以压缩和分区形式存储的

√ 根据保留策略自动清除

√ 基于时间和卷自动创建分区

√ 查询跳过不相关的分区

4、Oracle Total Recall场景

1) 使用闪回数据归档访问历史数据:

2) 可以选择增加空间:

3) 可以选择更改保留时间:

4) 可以选择清除数据:

5) 可以选择删除闪回数据归档:

5、透明的方案演化

1) DDL 支持

√ 添加、删除、重命名和修改列

√ 删除和截断分区

√ 重命名和截断表

2) 闪回查询可以跨 DDL 更改运行。

3) 不能自动支持所有其它 DDL(请见下一个幻灯片)

6、完整方案演化

1) 取消关联或关联 DBMS_FLASHBACK_ARCHIVE 程序包中的过程:

√ 对指定的表禁用 Total Recall 并允许更复杂的 DDL(升级、拆分表,等等)

√ 在关联期间执行方案完整性检查(基表和历史记录表必须为相同的方案)

2) 注:应谨慎使用此项功能,请注意此功能会导致归档不再保持不变,因为在取消关联期间历史记录可能会更改。

7、限制

1) 如果使用 Hybrid Columnar 压缩,则对基表不能启用 Total Recall

2) 如果使用取消关联,则不能保证历史记录的永久性(但您总可以通过正确的权限清除之前的历史记录)

3) 历史记录表没有可移植性

8、准则

1) 使用 SCN 进行精确查询

或者

2) 为方便可使用闪回技术

3) 闪回使用当前系统设置

4) 在查询过去的数据之前,使用 COMMIT 或 ROLLBACK 操作确保数据库的一致性

5) 不能从动态性能 (V$) 视图检索过去的数据。它们包含当前数据

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

9、查看闪回数据归档

查看结果:

二、使用闪回回收站

1、闪回删除和回收站

2、回收站

3、从回收站还原表

1) 还原删除的表和从属对象

2) 如果多个回收站条目具有相同原始名称,则:

√ 使用系统生成的唯一名称来还原特定版本

√ 使用原始名称时,还原的表遵循后进先出 (LIFO) 的规则

3) 重命名原始名称(如果当前正在使用该名称)

4、回收站:自动回收空间

5、回收站:手动回收空间

6、不使用回收站

回收站的安全注意事项:

7、查询回收站

第三部分:执行闪回数据库

一、配置闪回数据库

1、闪回数据库

闪回数据库操作:

√ 作用类似于数据库的倒带按钮

√ 可以在用户造成了逻辑数据损坏的情况下使用

2、闪回数据库体系结构

3、配置闪回数据库

二、执行闪回数据库操作

1、需要执行的操作

1) 确保数据库处于ARCHIVELOG 模式

2) 启用闪回日志记录并指定快速恢复区

2、闪回数据库:示例

1) 闪回:以独占模式装载数据库

2) 复查更改:以只读方式打开数据库

3) 完成:使用 RESETLOGS 以读/写方式打开数据库

3、闪回数据库注意事项

1) 闪回数据库操作完成后,打开数据库:

√ 在只读模式下验证使用的目标时间或 SCN 正确无误

√ 使用 RESETLOGS 操作以允许 DML

2) “闪回”与“恢复”是对立的

3) 以下情况下不能使用闪回数据库操作:

√ 控制文件已还原或已重新创建。

√ 表空间已删除。

√ 数据文件的大小已被减小。

4) 使用 TO BEFORE RESETLOGS 子句闪回至上一次 RESETLOGS 操作前的那一刻

三、监视闪回数据库

1、要针对保留目标监视容量

1) 查看快速恢复区的磁盘限额:

2) 确定当前闪回窗口:

3) 监视闪回数据库日志中的日志记录:

2、使用 EM 监视闪回数据库

3、保证还原点

√ 使用保证还原点可确保在任何时间通过执行 FLASHBACK DATABASE 命令都可闪回到该SCN

4、闪回数据库和保证还原点

要使用保证还原点,数据库必须满足以下先决条件:

√ COMPATIBLE 初始化参数必须设置为 10.2 或更大值

√ 数据库必须在 ARCHIVELOG 模式下运行

√ FLASHBACK DATABASE 需要使用大约从还原点时间开始的归档重做日志

√ 必须配置快速恢复区

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180528A1A9TJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券