如何重新复制损坏的物理备用数据库?

时间:2011-11-15 11:09:32

标签: database oracle oracle11g standby

首先是一些数据:我们正在使用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:11/15/2011 11:13:58在clone_default频道上切换命令失败 ORA-03113:通信频道上的文件结尾或

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

  4. 我搜索了解决方案,但只找到了从头开始设置物理备用数据库的指南。所以任何人都知道如何修复物理数据库而不将其设置为全新的?

    问候, CB

3 个答案:

答案 0 :(得分: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实例名称替换Dataguard_instance。 连接后,确保连接的目标数据库是主数据库

    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将执行物理备用数据库的复制。根据您的数据文件大小,这可能需要几个小时才能打开(我需要大约4个小时,主数据库闲置时大约有1,5T个文件)。

  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. 完成!

  15. 希望在需要时帮助您。

答案 1 :(得分:2)

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

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

Niall

答案 2 :(得分:0)

您是否拥有Oracle企业管理器网格控制设置? Data Guard设置是指向并单击。我看到设置物理或逻辑备用数据库的最简单方法。