故障转移后使用闪回数据库

当主数据库发生灾难性故障并且无法及时恢复主数据库时,我们将调用故障转移操作。
故障转移操作后,旧的备库成为新的主库,旧的主库处于“需要恢复”状态。

使用闪回数据库功能将旧的主数据库转换为新的备用数据库,而无需重新创建数据库。
我们可以闪回旧的主数据库,使其仅包含那些已应用于旧备用数据库的更改。
这使我们可以将旧的主数据库转换为新的备用数据库,而无需恢复旧的主数据库。

V$DATABASE 中的 STANDBY_BECAME_PRIMARY_SCN 列可以提供与故障转移对应的 SCN 编号。
旧的主数据库应该使用 FLASHBACK DATABASE TO SCN ... 命令倒带到这一点。
然后可以使用 SQL 命令 ALTER DATABASE CONVERT TO PHYSICAL STANDBY 将其转换为备用数据库。

注意:在故障转移之前,我们必须在旧的主数据库上启用闪回数据库功能。

如何在 Oracle Data Guard 配置中使用闪回数据库

闪回数据库

使用闪回数据库,我们可以通过撤消自那时以来发生的所有更改来快速将数据库带到更早的时间点。
此操作很快,因为我们不需要还原备份。
我们可以使用此功能撤消导致逻辑数据损坏的更改。

当我们使用闪回数据库时,Oracle 数据库使用过去的块镜像来回退对数据库的更改。
在正常的数据库操作期间,Oracle 数据库偶尔会将这些块镜像记录在闪回日志中,这些日志是按顺序写入的,不进行存档。
Oracle 数据库在快速恢复区自动创建、删除和调整闪回日志的大小。
我们只需要了解闪回日志,就可以监控性能并决定为闪回日志分配多少磁盘空间给快速恢复区,以及决定为闪回日志分配多少磁盘空间给快速恢复区。

使用闪回数据库回滚数据库所需的时间与我们需要回溯的时间以及目标时间之后的数据库活动量成正比。
还原和恢复整个数据库所需的时间可能会更长。
闪回日志中的前镜像仅用于将数据库恢复到过去的某个点,而前向恢复用于将数据库恢复到过去某个时间的一致状态。
Oracle 数据库将数据文件返回到上一个时间点,但不会返回诸如初始化参数文件之类的辅助文件。

闪回数据库还可用于补充 Data Guard 和 Recovery Advisor 并同步克隆的数据库。

RESETLOGS 后使用闪回数据库

物理备用配置

对于物理备库,当遇到重做信息中的OPEN RESETLOGS 命令时,重做应用服务可能不会停止。
如果物理备库的 SCN(系统更改号)远远落后于主库的 SCN,Redo Apply 服务可以在不停止的情况下解释 OPEN RESETLOGS 命令。
此功能称为“通过 RESETLOGS 恢复”。

在主数据库上发出 OPEN RESETLOGS 命令并且物理备用数据库上的托管恢复过程停止后,使用以下过程避免重新创建备用数据库:

  1. 在主数据库上,确定发出 OPEN RESETLOGS 命令时至少比 SCN 早两个 SCN 的 SCN。
    这是使备用数据库能够通过 OPEN RESETLOGS 正确恢复所必需的。
    使用以下查询查找“before RESETLOGS” SCN:
SQL> SELECT TO_CHAR(resetlogs_change# - 2) FROM v$database;
  1. 在备库上,通过如下查询获取当前的SCN:
SQL> SELECT TO_CHAR(current_scn) FROM v$database;
  1. 将备用数据库闪回到我们在步骤 1 中查询的“before RESETLOGS” SCN:
SQL> FLASHBACK STANDBY DATABASE TO SCN ;
  1. 在备用数据库上重新启动托管恢复。
    备用数据库将准备好接收和应用来自主数据库的日志。
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

逻辑备用配置

对于逻辑备库,SQL 应用服务在遇到重做信息中的 OPEN RESETLOGS 命令时可能不会停止。
如果逻辑备用数据库的 SCN 远远落后于主数据库的 SCN,SQL 应用服务将能够在不停止的情况下解释 OPEN RESETLOGS 命令。

在主数据库上执行 OPEN RESETLOGS 并且 SQL 应用进程在逻辑备用数据库上停止后,使用以下过程避免重新创建备用数据库:

  1. 在主数据库上,确定发出 OPEN RESETLOGS 命令时至少比 SCN 早两个 SCN 的 SCN。
    这是使备用数据库能够通过 OPEN RESETLOGS 正确恢复所必需的。
    使用以下查询查找“before RESETLOGS” SCN:
SQL> SELECT TO_CHAR(resetlogs_change# - 2) FROM v$database;
  1. 在备库上,通过如下查询获取当前的SCN:
SQL> SELECT TO_CHAR(current_scn) FROM v$database;
  1. 将备用数据库闪回到我们在步骤 1 中查询的“before RESETLOGS” SCN:
SQL> FLASHBACK STANDBY DATABASE TO SCN ;
  1. 在备库上重启SQL Apply。
    备用数据库将准备好接收和应用来自主数据库的日志。
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

闪回数据库在 Data Guard 配置中用于以下功能:

  • 快速启动故障转移:在启用快速启动故障转移之前,我们必须启用闪回数据库并在主数据库和目标备用数据库上设置快速恢复区。 (有关其他信息,请参阅标题为“启用快速启动故障转移”的类。)
  • 快照备用:要将物理备用数据库转换为快照备用数据库,我们必须配置快速恢复区和大小。如果没有启用闪回数据库,则在物理备库转换为未启用时启用,当物理备库转换为快照备库时将启用。 (有关其他信息,请参阅标题为“创建和管理快照备用数据库”的类。)

闪回数据库在 Data Guard 配置中提供以下优势:

  • 提供延迟重做应用的替代方法,以防止用户错误或者逻辑损坏。通过在这种情况下使用闪回数据库,备用数据库与主数据库更紧密地同步,从而减少故障转移和切换时间。
  • 无需在故障转移后完全重新创建原始主数据库。故障的主数据库可以闪回到故障转移之前的某个时间点,并转换为新主数据库的备用数据库。

使用 Enterprise Manager 配置闪回数据库

  1. 从数据库主页,从菜单中选择可用性 > 备份和恢复 > 恢复设置。

  2. 确保数据库处于 ARCHIVELOG 模式。
    如果不是,请选择 ARCHIVELOG 模式。

  3. 查看快速恢复区位置。
    快速恢复区是 Oracle 数据库中所有与恢复相关的文件和活动的统一存储位置。
    从介质故障中完全恢复数据库所需的所有文件都是快速恢复区的一部分。
    可以在快速恢复区创建的与恢复相关的文件包括归档重做日志文件、控制文件、Recovery Manager (RMAN) 创建的备份、闪回日志和更改跟踪文件。
    通过在特定区域分配存储位置和统一恢复相关文件,Oracle 数据库服务器将数据库管理员从管理这些组件创建的磁盘文件中解放出来。
    如果我们希望它位于不同的位置,请在“快速恢复区位置”字段中指定位置。

  4. 在 Fast Recovery Area Size 字段中设置快速恢复大小。

  5. 选择启用闪回数据库。
    我们还可以设置闪回保留时间,并且我们可以查看有关闪回数据库窗口的重要信息。

  6. 向下滚动到“恢复设置”页面底部,然后单击“应用”。

通过备用数据库角色转换闪回

使用闪回数据库将数据库恢复到物理备用数据库切换或者故障转移之前的时间点。
通过物理备用切换、故障切换或者激活闪回时,数据库角色不会改变。

在逻辑备用数据库中,FLASHBACK DATABASE 命令在切换或者故障转移之前将数据库恢复为系统更改号 (SCN) 或者时间戳。
对于逻辑备库,在闪回SCN 或者闪回时间时,数据库将恢复到其原始角色。
我们还可以使用闪回数据库撤消物理备用激活。

配置闪回数据库

启用闪回后可以打开数据库。
要启用闪回:

  1. 配置快速恢复区。

  2. 使用 DB_FLASHBACK_RETENTION_TARGET 初始化参数设置保留目标。

SQL> ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=2880 SCOPE=BOTH;

我们可以指定一个上限,以分钟为单位,表示我们希望能够将数据库闪回多远。
该示例使用 2,880 分钟,相当于两天。
该参数只是一个指标,不提供任何保证。
闪回时间间隔取决于在快速恢复区中保留了多少闪回数据。

  1. 使用以下命令启用闪回数据库:
SQL> ALTER DATABASE FLASHBACK ON;

在发出启用闪回数据库的命令之前,必须配置数据库以进行归档。

使用以下查询确定是否启用了闪回数据库:

SQL> SELECT flashback on FROM v$database;

使用 ALTER DATABASE FLASHBACK OFF 命令禁用闪回数据库。
因此,所有现有的闪回数据库日志都会被自动删除。

欢迎来到之路教程(on itroad-com)

使用闪回数据库代替应用延迟

作为 Apply Delay 配置选项的替代方案,我们可以使用闪回数据库来防止将损坏或者错误的数据应用到备用数据库。
Apply Delay 配置使用LOG_ARCHIVE_DEST_n 参数的DELAY 属性,以便在备用数据库上接收来自主数据库的重做数据,但重做应用会延迟其应用程序。
它提供了一个时间窗口,以便在 SQL 命令在备用数据库上执行之前,逻辑错误(例如在主数据库上提交的意外行删除)可以从备用数据库导出数据。

Flashback Database 可以快速轻松地将一个备库闪回到过去的任意时间 我们可以使用 Flashback Database 配置一个备库来实现过去。
我们可以使用闪回数据库配置一个备用数据库,以获得与具有不同延迟的多个备用数据库相同的好处。

使用闪回数据库和实时应用

Oracle Data Guard 实时应用特性减少了故障转移时间。
闪回数据库保护物理备用数据库免受逻辑数据损坏和用户错误的影响。
Data Guard 代理自动启用实时应用。

日期:2020-09-17 00:11:45 来源:oir作者:oir