Oracle案例09——ORA-12154: TNS:could not resolve the connect identifier specified
DG处理的问题还是蛮多的,但这次遇到一个比较奇葩的事情,表面配置、网络都没啥问题,但主备的同步始终有问题,经过多次调整参数、重新部署问题依旧,最终还是求助mos问题得以解决,现将处理过程记录如下:
一、问题现象
偶尔发现一个主备数据库同步有问题,检查备库发现除了无法完成同步,其他无错误信息,检查主库发现错误信息如下:
set line 200;
set pagesize 2000;
select dest_id,status,error from v$archive_dest;
ORA-12154: TNS:could not resolve the connect identifier specified
alert日志内容如下:
Error 12154 received logging on to the standby
trace内容如下:
*** 2018-07-02 09:37:36.230
OCIServerAttach failed -1
.. Detailed OCI error val is 12154 and errmsg is 'ORA-12154: TNS:could not resolve the connect identifier specified
'
OCIServerAttach failed -1
.. Detailed OCI error val is 12154 and errmsg is 'ORA-12154: TNS:could not resolve the connect identifier specified
'
OCIServerAttach failed -1
.. Detailed OCI error val is 12154 and errmsg is 'ORA-12154: TNS:could not resolve the connect identifier specified
'
OCIServerAttach failed -1
.. Detailed OCI error val is 12154 and errmsg is 'ORA-12154: TNS:could not resolve the connect identifier specified
'
*** 2018-07-02 09:37:36.246 4329 krsh.c
Error 12154 received logging on to the standby
二、问题原因
一般遇到ora-12154的错误,首先我们想到的肯定是监听配置和tnsnames.ora配置是否一致,然后看dg的服务名配置是否一致,然后还会检查本地监听(local_listener )是否配置正确,通过上述检查发现都没问题,然后又通过服务名用户名密码连接也没问题。那为什么还是会报服务名无法解析导致归档无法完成的错误呢?
最奇葩的是有些归档是可以传输过去,有些归档是无法传输。这里实在没招了,只能求助mos,在mos上找到了解决方案。(Adding an new Standby fails with error Ora-12154: TNS:could not resolve the connect identifier specified (文档 ID 1240558.1))
Cause After adding a new standby database, a corresponding new TNS alias entry was added to the tnsnames.ora on the primary node, but neither the instance nor the archiver processes were restarted. The ARC processes read the tnsnames.ora only once during process initialization, any updates to the tnsnames.ora after startup will not be known to the ARC process and hence the error
ORA-12154: TNS:could not resolve the connect identifier specified
is reported when the ARC processes try to resolve the (new) value for the 'service' attribute.
大致意思是说新的tns别名在主库被添加,实例和归档进程都没有被重启,导致归档进程读取的tnsnames.ora还是初始化启动的时候的内容,所以无法识别新的tnsnames.ora配置的服务器名。
三、解决方案
mos提供了3中解决方案,重启主数据库实例、指定归档服务串、重启归档进程,我这里采用的是第三种,重启归档进程
1. Shutdown and restart the primary database instance. This will cause a (short) outage of the primary database and may not be feasible for this reason. 2. Use a connect descriptor for the 'service' parameter. Instead of using a TNS alias for the service parameter (which requires a lookup of the tnsnames.ora file) one can use the connect descriptor itself. Assume the following (new) entry in the tnsnames.ora on the primary node: REMOTE_DEST_NEW = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = standbynode)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = STDBY) ) ) The corresponding 'alter system' command would then be:
alter system set log_archive_dest_2 = 'service="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=standbynode)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=STDBY)))"' ; Please note that there's a length limit for the log_archive_dest_<n> parameter, so this will only work if the length of the connect string plus the length of other attributes specified does not exceed this limit. 3. Kill the ARC processes of the primary instance. With RDBMS releases <= 9.2 it was possible to stop and restart the archiver processes by issuing 'archive log stop' followed by 'archive log start'.
However these commands are no longer valid with 10g and above, so to cause a respawn of the archiver processes they must be killed, they will be restarted immediately by the instance. This solution requires due care to avoid accidentally killing other vital background processes. The following script (ksh,bash) may assist in identifying the correct ARC processes that need to be killed: ps -ef|egrep "ora_arc.*_${ORACLE_SID}"|grep -v grep |while read user pid junk
do
echo "kill -9 $pid"
done
通过kill 掉主库的归档进程,然后完成alter system switch logfile ;发现数据库数据同步正常。
四、问题总结
查询从库日志应用情况:
select sequence#,archived,applied from v$archived_log order by sequence#;
改变归档路径:
alter system set LOG_ARCHIVE_DEST_STATE_3=defer scope=both; alter system set LOG_ARCHIVE_DEST_3='SERVICE=dbs ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dbs' scope=both; alter system set log_archive_dest_1='location=/oracle/oradata/db/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=db' scope=both;
Oracle案例09——ORA-12154: TNS:could not resolve the connect identifier specified的更多相关文章
- EF:Oracle.DataAccess.Client.OracleException: ORA-12154: TNS:could not resolve the connect identifier specified
报告错误:Oracle.DataAccess.Client.OracleException: ORA-12154: TNS:could not resolve the connect identifi ...
- plsql developer连接Oracle报错ORA-12154: TNS:could not resolve the connect identifier specified
今日更改Oracle网络配置文件后使用plsql developer 尝试连接到Oracle出现报错 ORA-12154: TNS:could not resolve the connect iden ...
- PL/SQL developer连接oracle出现“ORA-12154:TNS:could not resolve the connect identifier specified”问题的解决
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/50728536 本文出自[我是干勾鱼的博客] 使用PL/SQL developer ...
- Oracle 10g ORA-12154: TNS: could not resolve the connect identifier specified 问题解决! 我同事遇到的问题。 username/
Oracle 10g ORA-12154: TNS: could not resolve the connect identifier specified 问题解决! 我同事遇到的问题. userna ...
- PLSQL 错误问题:ora-12154:TNS:could not resolve the connect identifier
错误问题: ORA-12154: TNS:could not resolve the connect identifier specified 即无法解析指定的连接,这说明缺少了一个环境变量,TNS_ ...
- PL/SQL- ora-12154 '' TNS:could not resolve the connect identifier specified'
出现如上情况在使用pl/sql连接oracle服务器时很常见,问题出现的方式也很多 最终问题还是pl/sql在读取NETWORK\ADMIN\tnsnames.ora是配置的内容时解析错误 也就是说t ...
- PL/SQL Developer报错 ORA-12154:tns:could not resolve the connect identifier specified
PL/SQL Developer使用预先配置数据库报错 ORA-12154:tns:could not resolve the connect identifier specified. 情况描述:我 ...
- 关于ORA-12154: TNS:could not resolve the connect identifier specified的问题
问题:net configuration assistant测试连接可以连接.但是PLSQL连接不了,报ORA-12154: TNS:could not resolve the connect ide ...
- 在linux上使用impdp命令时提示ORA-12154: TNS:could not resolve the connect identifier specified的问题
今天在一台linux服务器上用impdp命令导入dmp文件时出现了错误: ORA: TNS:could not resolve the connect identifier specified 我使用 ...
随机推荐
- spring boot快速入门 10: 日志使用
第一步:pom 文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...
- java中的POJO、PO、VO分别是什么?
1.PO:persistant object 持久对象 可以看成是与数据库中的表相映射的java对象.使用Hibernate来生成PO是不错的选择. 2. VO:value object值对象. 通常 ...
- 下载windows版本apache网页服务器
1.进入apache服务器官网http://httpd.apache.org/,这里我们以下载稳定版的httpd 2.4.25为例,点击download. 2.点击链接Files for Micros ...
- web服务器/应用服务器
1.概念 Web服务器的基本功能就是提供Web信息浏览服务.它只需支持HTTP协议.HTML文档格式及URL.与客户端的网络浏览器配合.因为Web服务器主要支持的协议就是HTTP,所以通常情况下HTT ...
- 新建用户组、用户、用户密码、删除用户组、用户(适合CentOS、Ubuntu系统)
这个知识点,模糊了好久.!!! 生产中,习惯如下: useradd,默认会将自身新建用户,添加到同名的用户组中.如,useradd zhouls,执行此命令后,默认就添加到同名的zhouls用户组中. ...
- clipse validation 优化设置
- Bunder: What does :require => nil in Gemfile mean?
https://stackoverflow.com/questions/12200215/bunder-what-does-require-nil-in-gemfile-mean Require ni ...
- PHP之string之rtrim()函数使用
rtrim (PHP 4, PHP 5, PHP 7) rtrim - Strip whitespace (or other characters) from the end of a string ...
- 使用 DL4J 训练中文词向量
目录 使用 DL4J 训练中文词向量 1 预处理 2 训练 3 调用 附录 - maven 依赖 使用 DL4J 训练中文词向量 1 预处理 对中文语料的预处理,主要包括:分词.去停用词以及一些根据实 ...
- Golang Socket编程
Socket编程 在很多底层网络应用开发者的眼里一切编程都是Socket,话虽然有点夸张,但却也几乎如此了,现在的网络编程几乎都是用Socket来编程.你想过这些情景么?我们每天打开浏览器浏览网页时, ...