问题描述;

suse10sp2下安装oracle11g客户端,新建aipcti用户,tnsping vsm(vsm为客户端下服务名)失败,报错:
TNS-03505: Failed to resolve name ,Used parameter files:
/opt/oracle/product/11g/db/network/admin/sqlnet.ora。
而在oracle用户下直接执行此命令则没有问题。
 

问题处理:
1,使用aipcti用户直接tnsping +数据库IP则没有问题,但显示是通过
Used EZCONNECT adapter to resolve the alias 来解析的。

2,打开客户端下sqlnet.ora,里面有通过客户端访问数据库服务器顺序。可以看到该文件中访问顺序是先访问tnsnames,如果该文件下没有相关内容或访问失败,再通过EZCONNECT访问。

oracle@urp1vsmdb2:/opt/oracle/product/11g/db/network/admin> more sqlnet.ora
# sqlnet.ora Network Configuration File: /opt/oracle/product/11g/db/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)


3,显示tnsname.ora的权限:
oracle@urp1vsmdb2:/opt/oracle/product/11g/db/network/admin> ll -al tnsnames.ora
-rw-r----- 1 oracle oinstall 493 2011-09-23 16:09 tnsnames.ora

发现aipcti用户对该文件没有执行权限导致访问失败。
修改tnsnames.ora权限
oracle@urp1vsmdb2:/opt/oracle/product/11g/db/network/admin> chmod 644 tnsnames.ora
oracle@urp1vsmdb2:/opt/oracle/product/11g/db/network/admin> ls -al tnsnames.ora
-rw-r--r-- 1 oracle oinstall 493 2011-09-23 16:09 tnsnames.ora

4,修改后再次在aipcti下执行已经可以正常tnsping 客户端
</home/aipcti/icddir/bin>tnsping vsm

TNS Ping Utility for Linux: Version 11.1.0.7.0 - Production on 26-9?? -2011 14:38:04

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

Used parameter files:
/opt/oracle/product/11g/db/network/admin/sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.110.153.64)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = uivr)))
OK (0 msec)

 

以下为两种方式下输出结果对比:
1,aipcti用户下使用tnsping+数据库IP
</home/aipcti/icddir/bin>tnsping 10.110.153.64

TNS Ping Utility for Linux: Version 11.1.0.7.0 - Production on 26-9?? -2011 14:05:27

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

Used parameter files:
/opt/oracle/product/11g/db/network/admin/sqlnet.ora

Used EZCONNECT adapter to resolve the alias
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=10.110.153.64)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)

(HOST=10.110.153.64)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=10.110.153.64)(PORT=1521)))
OK (0 msec)

2,aipcti用户下使用tnsping+服务名,正常的:
oracle@urp1vsmdb2:/opt/oracle/product/11g/db/network/admin> tnsping vsm

TNS Ping Utility for Linux: Version 11.1.0.7.0 - Production on 26-SEP-2011 14:28:37

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

Used parameter files:
/opt/oracle/product/11g/db/network/admin/sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.110.153.64)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = uivr)))
OK (10 msec)