zoukankan      html  css  js  c++  java
  • RMAN duplicate from active 时遭遇 ORA-17627 ORA-12154

        最近在从活动数据库进行异机克隆时碰到了ORA-17629,ORA-17627,ORA-12154的错误,起初以为是一个Bug呢。Oracle Bug着实太多了,已经成了习惯性思维了。汗!错误提示是无法连接到连接到远程数据库,连接字符串无法解析。咦,配置了从auxiliary DB到target DB的tnsnames,且都是连通的阿......

    1、故障现象
        --下面的操作在auxiliary DB所在的机器上完成
        [oracle@linux4 ~]$ export ORACLE_SID=sybo3
        [oracle@linux4 ~]$ sqlplus / as sysdba
        SQL> startup nomount;
        [oracle@linux4 ~]$ rman target
    sys/oracle@TAR auxiliary sys/oracle@AUX  

        Recovery Manager: Release 11.2.0.1.0 - Production on Wed Jul 31 16:00:59 2013

        Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

        connected to target database: SYBO3 (DBID=2347733014)
        connected to auxiliary database: SYBO3 (not mounted)

        RMAN> duplicate database to sybo3 from active database spfile nofilenamecheck;

        Starting Duplicate Db at 31-JUL-13
        using target database control file instead of recovery catalog
        allocated channel: ORA_AUX_DISK_1
        channel ORA_AUX_DISK_1: SID=125 device type=DISK

        contents of Memory Script:
        {
           backup as copy reuse
           targetfile  '/u01/oracle/db_1/dbs/spfilesybo3.ora' auxiliary format
         '/u01/oracle/db_1/dbs/spfilesybo3.ora'   ;
           sql clone "alter system set spfile= ''/u01/oracle/db_1/dbs/spfilesybo3.ora''";
        }
        executing Memory Script

        Starting backup at 31-JUL-13
        allocated channel: ORA_DISK_1
        channel ORA_DISK_1: SID=23 device type=DISK
        RMAN-00571: ===========================================================
        RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
        RMAN-00571: ===========================================================
        RMAN-03002: failure of Duplicate Db command at 07/31/2013 16:01:07
        RMAN-03015: error occurred in stored script Memory Script
        RMAN-03009: failure of backup command on ORA_DISK_1 channel at 07/31/2013 16:01:07
        ORA-17629: Cannot connect to the remote database server                       
        ORA-17627: ORA-12154: TNS:could not resolve the connect identifier specified
        ORA-17629: Cannot connect to the remote database server

    2、故障分析与解决
        上面是一堆的RMAN与ORA相关错误号了
        在执行脚本backup as copy reuse时出现了错误,也就是说备份的时候出现错误RMAN-03009
        其次是ORA-17629,不能连接到远程数据库服务器,ORA-17627后跟着ORA-12154,说明是由于无法解析字符串
        下面来看看ORA-17629到底是什么问题
        [oracle@linux4 ~]$ oerr ora 17629
        17629, 00000, "Cannot connect to the remote database server"
        // *Cause:  Connecting to the remote server specified by database connect
        //          string for netowrk file transfer failed.
        // *Action: Check additional error messages

        重要的提示信息:for netowrk file transfer failed,网络文件传输失败。
        由于我们使用的是从活动数据库进行克隆,因此活动数据库的数据文件等等应当会通过网络复制到辅助数据库,更确切地是说是通过Oracle Net。
        也就是说尽管我们在辅助数据库端配置了到target DB以及到Auxiliary DB的tnsnames的连接是不够的,target DB端也要连接到Auxiliary DB传送文件。
        上面只是一个初步的推测,从Oracle Metalink找到了关于这个问题的描述。就是需要在两个服务器之间都配置到target DB与Auxiliary DB的tnsnames。

        检查一下两个主机的tnsnames.ora的配置
        [oracle@linux3 admin]$ more tnsnames.ora
        # tnsnames.ora Network Configuration File: /u01/oracle/db_1/network/admin/tnsnames.ora
        # Generated by Oracle configuration tools.

        TAR =                               #Target Server只有到Target DB的tnsnames.ora
          (DESCRIPTION =
            (ADDRESS_LIST =
              (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.25)(PORT = 1531))
            )
            (CONNECT_DATA =
              (SERVICE_NAME = SYBO3.ORASRV.COM)
            )
          )
     
        [oracle@linux4 admin]$ more tnsnames.ora  #Auxiliary Server有到Target DB和Auxiliary DB的tnsnames.ora
        TAR =
          (DESCRIPTION =
            (ADDRESS_LIST =
              (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.25)(PORT = 1531))
            )
            (CONNECT_DATA =
              (SERVICE_NAME = SYBO3.ORASRV.COM)
            )
          )

        AUX =
          (DESCRIPTION =
            (ADDRESS_LIST =
              (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.26)(PORT = 1531))
            )
            (CONNECT_DATA =
              (SERVICE_NAME = SYBO3.ORASRV.COM)
            )
          )

        -- Author : Robinson Cheng
        -- Blog   :
    http://blog.csdn.net/robinson_0612

        解决方案
            在Target Server端添加到Auxiliary DB的tnsnames.ora,即与Auxiliary server端使用相同的tnsnames entry

        下面测试tnsnames的连通性
        [oracle@linux3 admin]$ tnsping aux 
        [oracle@linux3 admin]$ tnsping tar
        [oracle@linux4 admin]$ tnsping aux
        [oracle@linux4 admin]$ tnsping tar

        再次duplicate时,成功鸟,喝茶哟!

    3、MetaLink的描述(Doc ID 1144273.1)
        Applies to:
        Oracle Database - Enterprise Edition - Version 11.2.0.1 and later
        Information in this document applies to any platform.

        Symptoms

        The duplicate database from active failed with the following errors :

        ORA-17629: Cannot connect to the remote database server
        ORA-17627: ORA-12154: TNS:could not resolve the connect identifier specified
        ORA-17629: Cannot connect to the remote database server

        Cause
            Cause 1:

            For Active Duplication you need to connect to the target and Auxiliary DB using net service name ,even if you are running RMAN at the Auxiliary DB.
            The net service name to connect to the Auxiliary DB should also be configured at the target Database.
      
            In the tnsnames.ora on the machine of the TARGET database, there are 2 services created to connect to auxiliary database that have the same "service name" but "different" configuration.

     

            Possible Cause 2:
      
            Mismatch of Parameters DEFAULT_DOMAIN and DB_DOMAIN
      
            db_domain=PROD.world         # init<SID>.ora
            default_domain=PROD.WORLD    # sqlnet.ora
      
            # DEFAULT_DOMAIN defined on sqlnet.ora is 'case' sensitive and when defined must match
               DB_DOMAIN initialization parameter

     

        Solution

            1. To be sure that the tnsnames.ora file of each machine (machine where is the source database and machine where is the auxiliary  database) has the service name to connect to auxiliary database.
      
            2. Verify that there are not duplicate service_name with different configuration in the tnsnames.ora file.
      
            As per the Step 2 of the below RMAN doc :
           
    http://download.oracle.com/docs/cd/B28359_01/backup.111/b28270/rcmdupdb.htm#i1008564
      
              Step 2: Establish Oracle Net Connectivity to the Auxiliary Instance
      
            When duplicating from an active database, you must first have connected as SYSDBA to the auxiliary instance by means of a net service name. This net service name must also be available on the source database instance.
            The source database instance, to which RMAN is connected as TARGET, uses this net service name to connect directly to the auxiliary database instance.


          Double check using the following commands on the TARGET and AUXILIARY

            % tnsping <target_db>
            % tnsping <auxiliary_db>
          Once this is executed for the TARGET and AUXILIARY, it should return the same 'connect' information.

        Additional Note:

            If the listener is started from a different environment to rman client
            Then server processes will try to resolve the AUXILIARY service name using $TNS_ADMIN/tnsnames.ora where the value of TNS_ADMIN is as set in the 'listener runtime environment'.


    Oracle&nbsp;牛鹏社

    相关参考
        RMAN 数据库克隆文件位置转换方法

        基于RMAN的异机数据库克隆(rman duplicate)

        基于 RMAN 的同机数据库克隆

        基于用户管理的同机数据库克隆

        Oracle 冷备份

        Oracle 热备份

        Oracle 备份恢复概念

        Oracle 实例恢复

        Oracle 基于用户管理恢复的处理

        SYSTEM 表空间管理及备份恢复

        SYSAUX表空间管理及恢复

        Oracle 基于备份控制文件的恢复(unsing backup controlfile)

        RMAN 概述及其体系结构

        RMAN 配置、监控与管理

        RMAN 备份详解

        RMAN 还原与恢复

        RMAN catalog 的创建和使用

        基于catalog 创建RMAN存储脚本

        基于catalog 的RMAN 备份与恢复

        RMAN 备份路径困惑

        自定义 RMAN 显示的日期时间格式

        只读表空间的备份与恢复

        Oracle 基于用户管理的不完全恢复

        理解 using backup controlfile

        使用RMAN实现异机备份恢复(WIN平台)

        使用RMAN迁移文件系统数据库到ASM

        基于Linux下 Oracle 备份策略(RMAN)

        Linux 下RMAN备份shell脚本

        使用RMAN迁移数据库到异机

        RMAN 提示符下执行SQL语句

        Oracle 基于 RMAN 的不完全恢复(incomplete recovery by RMAN)

        rman 还原归档日志(restore archivelog)

  • 相关阅读:
    2011 年50+优秀的网页设计(下)
    25+令人惊讶的是令人难以置信的WordPress技术支持网站
    2011 漂亮的网站(上)
    2011 美丽的网站(下)
    38 jQuery和CSS多级下拉菜单解决方案(一)
    HTMl代码片段
    30 +漂亮的jQuery菜单导航(一)
    分享几套还算不错的后台模板(有源码下载)
    配 色 方 案
    一个小故事
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3233691.html
Copyright © 2011-2022 走看看