ORA-12154 & TNS-03505 案例分享

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
云解析DNS,个人版 1个月
简介: 下面介绍一个工作中遇到的案例场景,应用服务器连接数据库出现”ORA-12154: TNS: 无法解析指定的连接标识符“。一般情况下ORA-12541错误是很容易排除的,但是这次遇到案例场景跟以往有所不同,我先模拟这样一个环境,然后一一道来。

     下面介绍一个工作中遇到的案例场景,应用服务器连接数据库出现”ORA-12154: TNS: 无法解析指定的连接标识符“。一般情况下ORA-12541错误是很容易排除的,但是这次遇到案例场景跟以往有所不同,我先模拟这样一个环境,然后一一道来。

    

     应用服务器安装的ORACLE 11g客户端,tnsname里面的有如下配置,我们要通过它连接到目标服务器

TEST =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.xxx.xxxx)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = xxxx)
    )
  )

 

此时连接数据库时,就会报ORA-12154: TNS: 无法解析指定的连接标识符。仔细检查过tnsname里面的配置,没有任何问题。

C:\Users>sqlplus test/test@TEST

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 16 14:00:04 2016

Copyright (c) 1982, 2010, Oracle. All rights reserved.

ERROR:

ORA-12154: TNS: 无法解析指定的连接标识符

请输入用户名:

 

 

接下来尝试一下tnsping是否正常,发现其报TNS-03505: Failed to resolve name。 两个服务器直接的网络是正常的。telnet 检测1521端口也是正常的。

C:\Users>tnsping TEST

TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 16-5月 -

2016 14:20:44

Copyright (c) 1997, 2010, Oracle. All rights reserved.

已使用的参数文件:

C:\OracleClient\Oracle32\product\11.2.0\client_1\network\admin\sqlnet.ora

TNS-03505: 无法解析名称

 

是否很纳闷,那么环境变量是否正常呢? 在David的这篇博客ORA-12154 和 TNS-03505 监听错误的解决方法里面有介绍。echo %path% 查看环境变量都OK,而且也能使用sqlplus连接到其它数据库(后面述说),说明应用服务器的客户端环境是正常的。那么为什么会出现这样的诡异的问题呢?其实是因为在客户端的sqlnet.ora配置文件里面,添加了一行"NAMES.DEFAULT_DOMAIN = db.test.com", 如下所示,

 

解决方法有两种:

1:修改tnsname.ora里面的配置信息,改为下面即可解决这个问题。此时使用TEST.db.test.com 或TEST都可以连接到数据库。

2:修改sqlnet.ora配置文件,删除这一行"NAMES.DEFAULT_DOMAIN = db.test.com"。

 

TEST.db.test.com =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.xxx.xxxx)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = xxxx)
    )
  )

 

 

 

关于NAMES.DEFAULT_DOMAIN 请参考下面官方文档介绍。

NAMES.DEFAULT_DOMAIN

Purpose

To set the domain from which the client most often looks up names resolution requests.

Usage Notes

When this parameter is set, the default domain name is automatically appended to any unqualified net service name or service name.

For example, if the default domain is set to us.example.com, then the connect string CONNECT scott@sales gets searched as sales.us.example.com. If the connect string includes the domain extension, such as CONNECT scott@sales.us.example.com, then the domain is not appended to the string.

Default

None

Example

 

 

 

 

相关文章
|
12月前
|
Oracle 关系型数据库 数据库
ORA-12541:TNS:no listener
PLSQL作为一个专门开发面向Oracle数据库的应用,那登录时肯定和Oracle息息相关了。那面对出现“ORA-12541:TNS:no listener”时应该怎么办呢?我分为了三个步骤:“确保Oracle连接成功”和“Oracle的Net Configuration Assistant的配置”和“重新启动Oracle服务”。
ORA-12541:TNS:no listener
|
存储 Oracle 关系型数据库
常见Oracle错误都在这了: ORA-00257/ORA-00313/ORA-28000/ORA-28000
常见Oracle错误都在这了: ORA-00257/ORA-00313/ORA-28000/ORA-28000
常见Oracle错误都在这了: ORA-00257/ORA-00313/ORA-28000/ORA-28000
|
网络协议 Oracle 关系型数据库
【Oracle】TNS-12154 错误解析
ORA-12514: TNS:监听程序当前无法识别连接描述符中请求的服务 这个提示在一定程度上导致产生误解,让人认为数据库服务名SERVICE NAME本身有问题,其实它指的是tnsnames.ora中配置的别名ALIAS所对应的SERVICE_NAME与在监听程序listener的注册的服务名中找不到匹配的服务名,当然如果只是配置了动态监听,则可能一个也没有(也可能一个也没有,比如只配置了动态监听)。
1009 0
|
Oracle 关系型数据库 数据库
ORA-00600 3020 ORA-10567案例
PlateSpin克隆复制出的Oracle数据库服务器,往往启动数据库实例都会遇到一些杂七杂八的问题。今天测试DR环境时又遇到了一个特殊场景,在此之前,我已经遇到了下面两起案例: ORA-00600: internal error code, arguments: [kcratr1_last...
1368 0
|
Oracle 关系型数据库 数据库
ORACLE 12C连接时报ORA28040和ORA01017的错误
【一】环境说明 1.1 Oracle服务端版本:12.2.0.1 1.2 Oracle客户端版本:11.2.0.1 【二】问题说明 2.1 客户端连接服务端的时候报ORA-28040的错误。
4203 0
|
Oracle JavaScript 关系型数据库