为Oracle指定Easy Connect字符串的防弹方法是什么?

时间:2009-05-12 09:33:53

标签: oracle

Oracle将Easy Connect字符串描述为

用户名@ [//]主机[:端口] [/服务名] [:服务器] [/ INSTANCE_NAME]

(来自http://www.oracle.com/technology/products/oraclenet/files/OracleNetServices_NetEasyConnect.pdf

但是,我们的一些服务人员经常遇到这种格式无法在客户站点上运行的问题,为了方便起见,我们使用TNSNAMES.ORA和别名,这使得Oracle Instant Client不那么“即时”

但是,事实上,连接字符串是集中管理的,因此系统中连接到数据库的所有计算机上的别名必须相同,这是一个维护麻烦。

失败的原因是我们对Oracle命名系统的所有部分,“SID”,“服务名称”,“主机名”,“全局服务名称”,命名方法,数据库本地和全局命名设置,SQLNET和TNS监听器配置。

由于我无法就该主题进行单一,一致和全面的参考,我以为我会将这个问题传递给社区。

1 个答案:

答案 0 :(得分:0)

如果要将客户端应用程序软件安装到现有客户环境中,那么最简单的方法就是对其SQL * Net配置进行反向工程。我会这样做:

  • 使用完整的Oracle客户端进入工作站,该客户端使用正确的tnsnames.ora和sqlnet.ora文件配置SQL * Net
  • 针对感兴趣的数据库运行tnsping实用程序,这将产生类似于此的输出:

$ tnsping testdb

适用于Linux的TNS Ping实用程序:版本11.1.0.6.0 - 2009年5月12日生产08:28:11

版权所有(c)1997,2007,Oracle。保留所有权利。

使用过的参数文件: /home/oracle/oracle/product/11.1.0/network/admin/sqlnet.ora

使用TNSNAMES适配器来解析别名 试图联系(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = testhost(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = testdb.world))) 好的(0毫秒)

这将告诉您主机名以及数据库侦听器期望连接的方式(端口和SERVICE_NAME与SID)。您现在可以获得指定Easy Connect字符串的信息。顺便说一句,tnsping实用程序也可以在Window客户端上使用。