3

首先是一些数据:我们使用的是Oracle 11g 数据库。在专用服务器上运行的主数据库和在单独的专用服务器上运行的物理备用数据库。我们使用 DataGuard 功能将主数据库实时自动复制到物理备用数据库。主数据库也通过 RMAN 进行备份。

目前我无法处理我们的物理备用数据库的问题。不知何故,存档日志从主数据库到物理备用数据库的传输停止了,更糟糕的是,一些存档日志已经从我们的一些员工中删除,现在我无法通过执行以下语句来发出恢复:

RECOVER MANAGED STANDBY DATABASE THROUGH ALL SWITCHOVER DISCONNECT USING CURRENT LOGFILE;

因为所需的存档日志已经消失了。

所以我的想法是重新复制物理备用数据库。我关闭了物理备用数据库并使用 STARTUP NOMOUNT 重新启动它。然后登录到托管主数据库的服务器并使用以下命令启动 RMAN 会话:

RMAN target / auxiliary sys@PRIMARY_DB_DG
   RMAN> sql 'ALTER SYSTEM ARCHIVE LOG CURRENT';
   RMAN> DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER
         NOFILENAMECHECK;

但是在将物理备用数据库更改为 MOUNT 状态后不久,该进程由于以下任一原因而崩溃

  1. RMAN-04006:来自辅助数据库的错误:ORA-12537:TNS:连接关闭,

  2. RMAN-03009:在 2011 年 11 月 15 日 11:13:58 时,clone_default 通道上的切换命令失败 ORA-03113:通信通道上的文件结束或

  3. RMAN-06136:辅助数据库中的 ORACLE 错误:ORA-03113:通信通道上的文件结尾

我在谷歌上搜索了解决方案,但只找到了从头开始设置物理备用数据库的指南。所以有人知道如何在不设置全新的情况下修复物理数据库吗?

问候, CB

4

3 回答 3

3

这是对我有用的解决方案:

  1. 关闭物理备用数据库

    SQL> shutdown immediate;
    
  2. (可选,在发生故障时更安全)备份关闭实例使用的所有数据文件 (*.dbf)、重做日志、归档日志、在线日志、闪回日志和控制文件。

  3. 删除引用位置中的所有数据文件 (*.dbf)、重做日志、归档日志、在线日志、闪回日志和控制文件,但请确保保留目录。

  4. 使用 NOMOUNT-Option 启动您的物理备用数据库

    SQL> startup nomount;
    
  5. 现在切换到您的主数据库环境。

  6. 在您的主要环境中启动您的 rman:

    $> rman target / auxiliary sys@Dataguard_instance
    

    Dataguard_instance 必须替换为您的 DataGuard 实例名称。连接后确保您连接的目标数据库是您的主数据库

    connected to target database: PRIM_DB (DBID=4135917300)
    auxiliary database Password:
    connected to auxiliary database: PRIM_DB (not mounted)
    

    请注意,您的物理备用数据库被列为未安装的主数据库。如果您看到与目标数据库中相同的信息,则您可能两次连接到主数据库。在这种情况下,我们将创建一个 100% 的副本,而不是一个物理备用数据库。因此,请确保您使用的是正确的 DataGuard 实例。

  7. 因此,在我们开始之前,我们强制进行日志切换:

    RMAN> sql 'alter system archive log current';
    
  8. 现在我们将开始我们的物理备用数据库的完整复制

    RMAN> duplicate target database for standby from active database dorecover  nofilenamecheck;
    
  9. 现在 rman 将执行您的物理备用数据库的复制。根据您的数据文件大小,这可能需要几个小时才能打开(当主数据库空闲大约 1.5T 文件时,我需要大约 4 个小时的晚上)。

  10. rman 完成后,您可以退出 rman。

  11. 重新连接到您的物理备用数据库并将其关闭:

    SQL> shutdown immediate;
    
  12. 如果您使用闪回选项(否则继续执行第 13 步):

    SQL> startup mount;
    SQL> alter database flashback on;
    SQL> alter database open;
    
  13. 重启物理待机:

    SQL> startup;
    
  14. 完成的!

希望对您有所帮助。

于 2012-03-13T10:31:03.470 回答
2

我会在备用站点的 alert.log 中查看在 rman 会话失败时出现的错误。

此外,您不必进行完全重新实例化 - 您可以将增量备份应用到备用数据库以使其保持最新状态。参见例如http://jarneil.wordpress.com/2008/06/03/applying-an-incremental-backup-to-a-physical-standby/

尼尔

于 2011-11-15T15:37:45.730 回答
-1

您有 Oracle Enterprise Manager Grid Control 设置吗?Data Guard 设置是点击式的。我见过的最简单的设置物理或逻辑备用数据库的方法。

于 2011-11-15T14:04:32.970 回答