发新话题
打印

[原创] Oracle linux client 下解决tnsping不能正常使用的办法

Oracle linux client 下解决tnsping不能正常使用的办法

最近因为一些事情需要在linux下连接oracle server,所以就跟ray老大学了1点点oracle的小知识。

后来用tnsping想测试ora的连接,结果发现有如下的问题:
引用:
Message 3511 not found; No message file for product=network, facility=TNSTNS-03505: Message 3505 not found; No message file for product=network, facility=TNS
查了网上的帖子,大多数人都说是环境变量没对,而测试机里,其实只装了这些东西:
引用:
oracle-instantclient-basic-10.2.0.3-1
oracle-instantclient-sqlplus-10.2.0.3-1
根本没装巨大的oracle linux client,那是否意味着必须装这个大东西才能用?后来经过琢磨,发现以下方法可以让tnsping正确的使用。这里权当一个记录吧。

1)设置动态库的路径

echo "/usr/lib/oracle/10.2.0.3/client/lib" > /etc/ld.so.conf.d/oracle10.conf

然后执行ldconfig 更新cache

2)设置环境变量

export ORACLE_HOME=/usr/lib/oracle/10.2.0.3/client/
export TNS_ADMIN=$ORACLE_HOME

3)正确设置/usr/lib/oracle/10.2.0.3/client/tnsnames.ora
引用:
oratest =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = oratest)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )
4)拷贝tnsping需要的msg文件

从其他安装了oracle linux client这个大家伙的目录里,拷贝出来。例如:

将/home/oracle/oracle/product/10.2.0/client_1/network/ 目录拷贝到本机的:

/usr/lib/oracle/10.2.0.3/client 下
此时这个目录下就有:ls /usr/lib/oracle/10.2.0.3/client
bin  lib  network tnsnames.ora

5)执行测试
./tnsping oratest
结果:
引用:
TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 07-JUL-2008 20:25:10

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

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oratest)))
OK (50 msec)
希望这个小帖子能给大家提供点帮助。
请引用或摘抄本站文章信息的朋友,保留本站链接及作者信息,保护版权,谢谢。

构建高性能大容量开源邮件系统- ExtMail

Postfix在中国官方网站

TOP

发新话题