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)
)
)
解决方案
在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时,成功!
--转自