tnsping通oracle连不上,写正确了tnsnames文件却tnsping无法ping通

今天遇到个问题比较奇怪,tnsnames.ora明明配置正确,在其中写的IP是10.1.2.40,但是在tnsping中却解析到10.1.2.45:

[oracle@si_adm02 admin]$ cat tnsnames.ora

# TNSNAMES.ORA.SI_WWW01 Network Configuration File: /ora9i/app/oracle/product/9.2.0/network/admin/tnsnames.ora.si_www01

# Generated by Oracle configuration tools.

EXTPROC_CONNECTION_DATA =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))

)

(CONNECT_DATA =

(SID = PLSExtProc)

(PRESENTATION = RO)

)

)

dev2 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.2.40)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME =misc1)

)

)

[oracle@si_adm02 admin]$

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

[oracle@si_adm02admin]$cattnsnames.ora

# TNSNAMES.ORA.SI_WWW01 Network Configuration File: /ora9i/app/oracle/product/9.2.0/network/admin/tnsnames.ora.si_www01

# Generated by Oracle configuration tools.

EXTPROC_CONNECTION_DATA=

(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC))

)

(CONNECT_DATA=

(SID=PLSExtProc)

(PRESENTATION=RO)

)

)

dev2=

(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.2.40)(PORT=1521))

)

(CONNECT_DATA=

(SERVICE_NAME=misc1)

)

)

[oracle@si_adm02admin]$

[oracle@si_adm02 admin]$ tnsping dev2

TNS Ping Utility for Linux: Version 9.2.0.4.0 - Production on 06-1Ղ -2010 15:03:15

Copyright (c) 1997 Oracle Corporation. All rights reserved.

Used parameter files:

/oracle/product/9.2.0/network/admin/sqlnet.ora

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.3.54)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ora9i)))

OK (0 msec)

[oracle@si_adm02 admin]$

1

2

3

4

5

6

7

8

9

10

11

12

13

14

[oracle@si_adm02admin]$tnspingdev2

TNSPingUtilityforLinux:Version9.2.0.4.0-Productionon06-1Ղ-201015:03:15

Copyright(c)1997OracleCorporation.Allrightsreserved.

Usedparameterfiles:

/oracle/product/9.2.0/network/admin/sqlnet.ora

UsedTNSNAMESadaptertoresolvethealias

Attemptingtocontact(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.3.54)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ora9i)))

OK(0msec)

[oracle@si_adm02admin]$

而且我把tnsnames.ora改名成别的名称,这个service name依然可以被解析到。

既然都改名了,难道还有别的tnsnames.ora文件在被使用?用find名称查了一下:

[oracle@si_adm02 admin]$ find / -name tnsnames.ora >hjm.txt

[oracle@si_adm02 admin]$ cat hjm.txt

/opt/aspire/product/imallcpp/product/9.2.0/network/admin/samples/tnsnames.ora

/opt/aspire/product/imallcpp/product/9.2.0/network/admin/tnsnames.ora

/opt/instantclient_10_2/tnsnames.ora

/opt/instantclient_10_2_4/tnsnames.ora

/oracle/product/9.2.0/network/admin/samples/tnsnames.ora

1

2

3

4

5

6

7

[oracle@si_adm02admin]$find/-nametnsnames.ora>hjm.txt

[oracle@si_adm02admin]$cathjm.txt

/opt/aspire/product/imallcpp/product/9.2.0/network/admin/samples/tnsnames.ora

/opt/aspire/product/imallcpp/product/9.2.0/network/admin/tnsnames.ora

/opt/instantclient_10_2/tnsnames.ora

/opt/instantclient_10_2_4/tnsnames.ora

/oracle/product/9.2.0/network/admin/samples/tnsnames.ora

发现在其他路径下还是有tnsnames.ora文件的,而且用于解析的,就是其他路径的这个文件。

在此,基本的问题就搞明白了,由于用了其他路径的tnsnames.ora,所以无法正确解析。为解决这个问题,我们指定$ORACLE_HOME下的network/admin路径,我们export一下TNS的路径,或者在环境变量中加上TNS_ADMIN,就能解决这个问题了:

[oracle@si_adm02 admin]$ export TNS_ADMIN=/oracle/product/9.2.0/network/admin

[oracle@si_adm02 admin]$

[oracle@si_adm02 admin]$

[oracle@si_adm02 admin]$ tnsping dev2

TNS Ping Utility for Linux: Version 9.2.0.4.0 - Production on 06-1Ղ -2010 15:12:03

Copyright (c) 1997 Oracle Corporation. All rights reserved.

Used parameter files:

/oracle/product/9.2.0/network/admin/sqlnet.ora

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.2.40)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME =misc1)))

OK (10 msec)

[oracle@si_adm02 admin]$

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

[oracle@si_adm02admin]$exportTNS_ADMIN=/oracle/product/9.2.0/network/admin

[oracle@si_adm02admin]$

[oracle@si_adm02admin]$

[oracle@si_adm02admin]$tnspingdev2

TNSPingUtilityforLinux:Version9.2.0.4.0-Productionon06-1Ղ-201015:12:03

Copyright(c)1997OracleCorporation.Allrightsreserved.

Usedparameterfiles:

/oracle/product/9.2.0/network/admin/sqlnet.ora

UsedTNSNAMESadaptertoresolvethealias

Attemptingtocontact(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.2.40)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=misc1)))

OK(10msec)

[oracle@si_adm02admin]$

最后,查到原来在root用户下,已经指定了这个TNS_ADMIN:

[root@si_adm02 root]# id

uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

[root@si_adm02 root]# env |grep -i tns

TNS_ADMIN=/opt/instantclient_10_2

[root@si_adm02 root]#

1

2

3

4

5

[root@si_adm02root]# id

uid=0(root)gid=0(root)groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

[root@si_adm02root]# env |grep -i tns

TNS_ADMIN=/opt/instantclient_10_2

[root@si_adm02root]#

应该是oracle用户没有配TNS_ADMIN,且oracle用户又继承了root的环境变量,所以在tnsping的时候,没有去正确的路径找tnsnames.ora文件,所以,解析不到了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值