验证 DR 就绪情况

查看灾难恢复准备就绪的最佳做法,并验证灾难恢复设置中是否有计划事件和计划外事件。

关于 DR 就绪情况

查看灾难恢复 (DR) 就绪状态的最佳做法。

使用 Active Data Guard 可以将只读工作量卸载到备用数据库以提供备用数据库已准备好生产的连续应用程序级别验证。除了 Oracle Data Guard 应用进程持续执行 Oracle 块级别验证之外,这还提供了一定程度的保证。

使用快照备用数据库创建生产数据库的确切副本以供开发和测试使用。定期将备用数据库置于读/写模式(使用 Data Guard 快照备用数据库),以验证其支持读写生产负载的准备情况。快照备用数据库还可用于修补程序和升级的最终功能和性能测试级别,因为 DR 系统大小与生产系统类似。快照备用数据库继续从归档以供以后使用的主数据库接收 redo,该数据库始终提供数据保护。但是,如果在进行测试时需要故障转移,则恢复时间 (RTO) 将延长将快照备用数据库转换回备用数据库所需的时间。当备用数据库处于快照模式时,快速恢复区需要附加存储(以保存从主生产数据库接收的归档重做,供以后使用以及快照备用数据库生成的当前重做和闪回日志)。

以下是使用快照备用数据库的一些好处:

  • 它提供了一个用于开发和测试的生产数据库的确切副本,同时始终保持数据保护。可以使用 Oracle Real Application Testing 选项捕获主数据库工作量,然后在快照备用数据库上重放该工作量以进行测试。
  • 通过转换为物理备用数据库并重新同步,可以轻松刷新以包含当前生产数据。

将备用数据库转换为快照备用数据库

当您希望生产数据库的确切副本时,可以使用 Oracle Data Guard 中介将物理备用数据库转换为快照备用数据库并验证故障转移。

快照备用数据库是从物理备用数据库创建的完全可更新的备用数据库。在快照备用数据库上,会收到 redo 数据,但在快照备用数据库转换回物理备用数据库之前不会应用。

使用快照备用数据库有几个好处:

  • 快照备用数据库为开发和测试目的提供了精确的副本,同时始终保持数据保护。您可以使用 Oracle Real Application Testing 选项捕获主数据库工作量,然后在快照备用数据库上重放该工作量以进行测试。
  • 您可以通过转换为物理备用并重新同步来轻松刷新快照备用项以包含当前生产数据。

使用 Oracle Data Guard 命令行界面 (command-line interface, DGMGRL) 可以直接从命令行界面管理 Oracle Data Guard 中介配置及其各种成员。

  1. 使用 sys 用户名和口令登录备用数据库实例上的 DGMGRL 会话。
    [oracle@exa11db01 ~]$ dgmgrl
    DGMRGL> connect
    Username: sys
    Password:
  2. 查看配置以确认主数据库和备用数据库。
    DGMGRL> show configuration;
    输出将类似于以下内容:
    Configuration - onpremexadr
      Protection Mode: MaxPerformance
      Members:
      db1_phx3g7 - Primary database
        db1        - Physical standby database 
          Error: ORA-16664: unable to receive the result from a member
    Fast-Start Failover:  Disabled
    Configuration Status:
    ERROR   (status updated 108 seconds ago)
  3. 将物理备用数据库转换为快照备用数据库。
    在此示例中,standby_database_unique_name 是 db1。
    DGMGRL> convert database standby_database_unique_name to snapshot standby;
    转换完成后,输出将具有类似于以下内容的行:
    Converting database "db1" to a Snapshot Standby database, please wait...
    Database "db1" converted successfully
  4. 查看配置以验证转换。
    DGMGRL> show configuration;
    输出将类似于以下内容:
    Configuration - onpremexadr
      Protection Mode: MaxPerformance
      Members:
      db1_phx3g7 - Primary database
        db1        - Snapshot standby database 
          Error: ORA-16664: unable to receive the result from a member
    Fast-Start Failover:  Disabled
    Configuration Status:
    ERROR   (status updated 59 seconds ago)
  5. 将快照备用数据库转换回物理备用数据库。
    DGMGRL> convert database standby_database_unique_name to physical standby;
    输出将类似于以下内容:
    Converting database "db1" to a Physical Standby database, please wait...
    Operation requires a connection to database "db1_phx3g7"
    Connecting ...
    Connected to "DB1_phx3g7"
    Connected as SYSDBA.
    Oracle Clusterware is restarting database "db1" ...
    Connected to "db1"
    Connected to "db1"
    Continuing to convert database "db1" ...
    Database "db1" converted successfully
  6. 查看配置以验证转换。
    DGMGRL> show configuration;
    输出将与以下内容类似:
    Configuration - onpremexadr
      Protection Mode: MaxPerformance
      Members:
      db1_phx3g7 - Primary database
        db1        - Physical standby database 
          Error: ORA-16664: unable to receive the result from a member
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    ERROR   (status updated 20 seconds ago)
    DGMGRL>

设置 Oracle Data Guard 参数

在执行切换之前,请在主数据库实例和备用数据库实例上设置 Oracle Data Guard 参数。

  1. 在本地主数据库上,检查系统更改编号 (SCN)。
    select standby_became_primary_scn from v$database;
    输出将与以下内容类似:
    STANDBY_BECAME_PRIMARY_SCN
    --------------------------
    0
  2. 验证主数据库上未启用闪回。
    select flashback_on from v$database;
    输出将与以下内容类似:
    FLASHBACK_ON
    ------------------
    NO
  3. 显示参数恢复。
    SQL> show parameter recovery;
    输出将与以下内容类似:
    NAME				     TYPE	 VALUE
    ------------------------------------ ----------- ------------------------------
    db_recovery_file_dest	     string	      +RECOC1
    db_recovery_file_dest_size	big integer	  8256M
    recovery_parallelism             integer             0
    remote_recovery_file_dest        string
  4. 设置 DB_RECOVERY_FILE_DEST_SIZE 参数的大小以满足数据库大小。
    以下示例使用 20G 作为示例数据大小。根据您的数据库设置数据大小。
    SQL> alter system set DB_RECOVERY_FILE_DEST_SIZE=20G;
  5. 在主数据库上启用闪回。
    SQL> alter database flashback on;
  6. 确认数据库闪回已启用(启用)。
    SQL> select flashback_on from v$database;
    输出将类似于以下内容:
    FLASHBACK_ON
    ------------------
    YES
  7. 在备用 Oracle Database Exadata Cloud Service 上,确定是否启用闪回。
    SQL> select flashback_on from v$database;
    输出将类似于以下内容:
    FLASHBACK_ON
    ------------------
    NO
  8. 查询云中备用数据库的开放模式状态。
    SQL> select open_mode from v$database;
    输出将类似于以下内容:
    OPEN_MODE
    -------------------- 
    MOUNTED
  9. 取消备用数据库的数据库恢复。
    SQL> alter database recover managed standby database cancel;
  10. 在云中的数据库实例上设置闪回。
    SQL> alter database flashback on;
  11. 断开备用数据库与会话的连接。
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
    Database altered
  12. 确认数据库闪回已启用(启用)。
    SQL> select flashback_on from v$database;
    FLASHBACK_ON
    ------------------
    YES
  13. 显示保留参数。
    SQL> show parameter_retention;
    输出将类似于以下内容:
    NAME				     TYPE	 VALUE
    ------------------------------------ ----------- ------------------------------
    db_flashback_retention_target	     integer	 1440
    undo_retention			      integer	 900