您好,欢迎访问一九零五行业门户网

各种TNS报错总结--监听器及tnsnames.ora配置文件各种出错总结

各种tns报错总结--监听器及tnsnames.ora配置文件各种出错总结
本地命名的配置:.本地名可以用简单的名称访问到所需的数据库或服务器所需的信息,而这些信息保存到了tnsnames.ora中.
localname: 本地名称
address: 服务器地址
protocol: 使用协议
host: ip地址
port: 监听端口
service_name: 数据库服务名称
首先要保证tnsnames.ora文件中的格式正确,如=号、空格、括号之类基本格式不出错
这个可以参考我的一篇tnsnames.ora各种模板:
当我们发出一条命令:sqlplus bys/bys@test时,连接到数据库大致经过以下步骤:
1.首先在sqlplus程序的相关目录中查找tnsnames.ora
2.在tnsnames.ora中查找test=开头的字符串
3.根据tnsnames.ora中查找test=字符串中的:protocol = tcp)(host = 192.168.1.211) 这一句,查询相应的host,如是ip,则直接访问;如是域名,需要解析为ip
4.当可以与host =中描述的主机通讯后,再根据(port = 1521)这一句中的描述,在主机的1521这一端口使用tcp协议进行连接。
5.如果以上连接成功,则已经连接到数据库监听器。此时tnsnames.ora中查找test=字符串中的:service_name = bys1,这一句则再次指定了要连接到监听器的bys1服务上
6.如果以上连接成功,已经连接到监听器的bys1服务,则会根据监听器中服务所对应的实例,来连接到具体的实例。(在tnsnames.ora的test=字符串中也可以在service_name =这一句下面再指定具体实例--我实验中未指定;如不指定,则由监听器来分配;如监听器中同一服务下有多个实例(如rac),由监听器来进行动态均衡分配连接)。
7.如果以上连接成功,,则已经连接到实例。接下来就由数据库来验证用户名、密码的正确性了。
本篇的实验即使遵循以上的sqlplus bys/bys@test连接到数据库的步骤来对每一步进行错误演示
关于连接数据库的语句:sqlplus bys/bys@192.168.1.211:1521/bys1 这种是不使用tnsnames.ora文件。连接到192.168.1.211主机的1521端口的bys1服务上。 关于sqlplus连接数据库的写法,更详细见:
实验环境:linux--ole 5.8;oracle -oracle database 11g enterprise edition release 11.2.0.1.
##################################################################################
1.tnsnames.ora文件不存在。此时使用本地名来连接是不行的。测试时:
tnsping报错为:tns-03505: failed to resolve name
sqlplus报错为:ora-12154: tns:could not resolve the connect identifier specified
实验数据
[oracle@bys001 admin]$ ls
listener.bak samples tnsnames.ora
listener.ora shrept.lst
[oracle@bys001 admin]$ mv tnsnames.ora tnsnames.oraa
[oracle@bys001 admin]$ tnsping bys1
tns ping utility for linux: version 11.2.0.1.0 - production on 08-nov-2013 09:24:18
copyright (c) 1997, 2009, oracle. all rights reserved.
used parameter files:
tns-03505: failed to resolve name
[oracle@bys001 admin]$ sqlplus bys/bys@bys1
sql*plus: release 11.2.0.1.0 production on fri nov 8 09:25:12 2013
copyright (c) 1982, 2009, oracle. all rights reserved.
error:
ora-12154: tns:could not resolve the connect identifier specified
##################################################################################
2.tnsnames.ora 中test本地名对应的字段描述格式正确,数据库监听开启。但是使用tnsping或sqlplus时所用的本地名不对(本地名指的是tnsnames.ora 中的描述字段:
test =
(description = 这里;也即sqlplus bys/bys@test这里的test)
测试时:
tnsping报错为:tns-03505: failed to resolve name
sqlplus报错为:ora-12154: tns:could not resolve the connect identifier specified
实验数据:
[oracle@bys001 admin]$ tnsping hello
tns ping utility for linux: version 11.2.0.1.0 - production on 07-nov-2013 23:41:29
copyright (c) 1997, 2009, oracle. all rights reserved.
used parameter files:
tns-03505: failed to resolve name
[oracle@bys001 admin]$ sqlplus bys/bys@hello
sql*plus: release 11.2.0.1.0 production on thu nov 7 23:42:36 2013
copyright (c) 1982, 2009, oracle. all rights reserved.
error:
ora-12154: tns:could not resolve the connect identifier specified
#########################################################################################################
3.tnsnames.ora 中test本地名对应的字段描述格式正确,数据库监听开启。但是tnsnames.ora 中host = 字段指定的ip不存在或无法ping通。测试时:
tnsping和sqlplus报错均为: tns-12543: tns:destination host unreachable
实验数据:
[oracle@bys001 admin]$ cat tnsnames.ora
# tnsnames.ora network configuration file: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# generated by oracle configuration tools.
bys1 =
(description =
(address = (protocol = tcp)(host = 192.168.1.211)(port = 1521))
(connect_data =
(server = dedicated)
(service_name = bys1)
)
)
test =
(description =
(address = (protocol = tcp)(host = 192.168.1.222)(port = 1521)) 手动将host中的ip改为一个不存在的ip即可
(connect_data =
(server = dedicated)
(service_name = bys1)
)
)
[oracle@bys001 ~]$ ping 192.168.1.222
ping 192.168.1.222 (192.168.1.222) 56(84) bytes of data.
from 192.168.1.211 icmp_seq=2 destination host unreachable
from 192.168.1.211 icmp_seq=3 destination host unreachable
[oracle@bys001 admin]$ tnsping test
tns ping utility for linux: version 11.2.0.1.0 - production on 07-nov-2013 23:08:12
copyright (c) 1997, 2009, oracle. all rights reserved.
used parameter files:
used tnsnames adapter to resolve the alias
attempting to contact (description = (address = (protocol = tcp)(host = 192.168.1.222)(port = 1521)) (connect_data = (server = dedicated) (service_name = bys1)))
tns-12543: tns:destination host unreachable
[oracle@bys001 admin]$ sqlplus bys/bys@test
sql*plus: release 11.2.0.1.0 production on thu nov 7 23:08:21 2013
copyright (c) 1982, 2009, oracle. all rights reserved.
error:
ora-12543: tns:destination host unreachable
更多详情见请继续阅读下一页的精彩内容:
相关阅读:
oracle数据库中listener.ora sqlnet.ora tnsnames.ora的区别
oracle rac 下非缺省端口监听配置(listener.ora tnsnames.ora)
oracle rac 监听配置 (listener.ora tnsnames.ora)
oracle: listener.ora 、sqlnet.ora 、tnsnames.ora的配置及例子
oracle本地命名服务tnsnames.ora配置
其它类似信息

推荐信息