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'.

相关参考
RMAN 数据库克隆文件位置转换方法
基于RMAN的异机数据库克隆(rman duplicate)
Oracle 基于备份控制文件的恢复(unsing backup controlfile)
Oracle 基于 RMAN 的不完全恢复(incomplete recovery by RMAN)
rman 还原归档日志(restore archivelog)
RMAN duplicate from active 时遭遇 ORA-17627 ORA-12154的更多相关文章
- 基于RMAN从活动数据库异机克隆(rman duplicate from active DB)
Oracle 11g RMAN能够实现基于活动数据库进行异机克隆,从而省去需要先备份再ftp到辅助服务器的过程.这一切可以全部交给Oracle来搞定.在克隆期间,Oracle会读取Target DB的 ...
- 使用RMAN DUPLICATE...FROM ACTIVE DATABASE创建物理standby database
Applies to: Oracle Server - Enterprise Edition - Version 11.1.0.6 to 11.2.0.4 [Release 11.1 to 11.2] ...
- RMAN 'Duplicate From Active Database' Feature in Oracle11g (Doc ID 452868.1)
RMAN 'Duplicate From Active Database' Feature in Oracle11g (Doc ID 452868.1) APPLIES TO: Oracle Data ...
- 关于 rman duplicate from active database 搭建dataguard--系列一
关于 rman duplicate from active database.详细操作实际为backup as copy .会拷贝非常多空块.对于那些数据库数据文件超过100G的都不是非常建议用:在非 ...
- RMAN duplicate from active遇到ora-17167,ora-12154
最近在从活动数据库进行异机克隆时碰到了ORA-17629,ORA-17627,ORA-12154的错误,起初以为是一个Bug呢.Oracle Bug着实太多了,已经成了习惯性思维了.汗!错误提示是无法 ...
- RMAN duplicate from active database
在Oracle 11G有二种方法实现duplicate: 1.Active database duplication 2.Backup-based duplication Active databas ...
- Creating Physical Standby Using RMAN DUPLICATE...FROM ACTIVE DATABASE执行结果
> run { > allocate channel prmy1 type disk; > allocate channel prmy2 type disk; > alloca ...
- 使用 rman duplicate from active database 搭建dataguard 手记--系列二
run { allocate channel prmy1 type disk; allocate channel prmy2 type disk; allocate channel prmy3 typ ...
- Oracle 11gR2使用RMAN duplicate复制数据库
11g的RMAN duplicate 个人感觉比10g的先进了很多,10g需在rman备份的基础上进行复制,使用RMAN duplicate创建一个数据完全相同但DBID不同的数据库.而11g的RMA ...
随机推荐
- 皴linux rootpassword(方式:重置rootpassword)
皴linux rootpassword: 开机后,.点击"e"进入维护模式.选"内核选项",例如,看到下面的数字: watermark/2/text/aHR0c ...
- poj3417 Network 树形Dp+LCA
题意:给定一棵n个节点的树,然后在给定m条边,去掉m条边中的一条和原树中的一条边,使得树至少分为两部分,问有多少种方案. 神题,一点也想不到做法, 首先要分析出加入一条边之后会形成环,形成环的话,如果 ...
- Android之Http沟通——4.Android HTTP索取信息:HttpClient
本节介绍: 他谈到了部分HttpURLConnection.本节HttpClient该,Apache为我们提供HttpClient(简单的Http客户端),只是毕竟不是亲儿子.HttpClient在A ...
- XStream 用法汇总
XStream是一家Java对象和XML转换工具,很好很强大.它提供了所有的基本型.排列.收集和其他类型的支持,直接转换.因此XML在数据交换经常使用.对象序列化(和Java对象的序列 ...
- Android经常使用的布局类整理(一)
Android经常使用的布局类整理 近期又回头做了一下android的项目,发觉越来越不从心,非常多东西都忘了,简单的页面布局也非常多写不出来,首先还是先整理一下一些会混淆的概念先 layout_wi ...
- 网络资源(7) - JAX-WS视频
2014_08_25 http://v.youku.com/v_show/id_XNjMzNDcyMTk2.html 基于JAX-WS编程模型的WebService 1. @WebService注释类 ...
- iOS开发- 拨打电话总结
关于iOS应用拨打电话, 我所知道的有3种办法, 详细例如以下: 一.利用openURL(tel) 特点: 直接拨打, 不弹出提示. 而且, 拨打完以后, 留在通讯录中, 不返回到原来的应用. //拨 ...
- Swift # Apple Pay集成
苹果正式开放了Apple Pay支付系统.Apple Pay是一个基于NFC的支付系统,不久将被数以万计的线下零售商店予以支持.即便这项科技并不是彻底的突破性进展,但它足以推动许多公司和零售商来支持这 ...
- C#面向对象复习概要
1.面向对象:我们将具有统一行为和属性的对象抽象划分为类,通过类去创建对象.这种编程思想叫做面向对象的编程思想. 2.属性:对象具有的属性 using System; using System.Col ...
- C--运算符,表达式和语句实例
//第五章 运算符,表达式和语句 #include<stdio.h> //引入头文件 #include<math.h> #define ADJUST 7.64 //定义常量 # ...