使用标准的Delphi dbexpress dbexpora.dll + oci.dll (10g) (已安装oracle即时客户端)。
当直接在Oracle数据库上运行时,我们可以很好地运行dbexpress应用程序。在这种情况下使用的本地数据库别名只是将我们的DB服务名称ORCL指定为“dbxconnections.ini”参数。
我们正尝试从客户端机器连接到这个相同的数据库,并收到一系列错误。
当然,我们尝试在数据库参数中使用各种类型的字符串。使用像MOHAWK2:1521:ORCL这样的字符串,我们至少可以得到一个监听器错误:
连接失败: ORA-12514 TNS:侦听器当前不知道连接描述符中请求的服务。
我想有一些工具可以测试命名的可用性……
发布于 2009-05-13 18:55:21
在服务器上使用TNSPING查看它是如何解析服务名称的。各种配置选项和文件可以将一个简单的指定映射到一个完整的服务器/端口/服务。
C:>TNSPING ORCL
已使用TNSNAMES适配器解析尝试联系的别名(描述=(地址=(协议=TCP)(主机=127.0.0.1)(端口= 1521)) (CONNECT_DATA =(服务器=专用) (SERVICE_NAME =XE) OK (0毫秒)
提取出服务器/端口/服务,并以组件或连接方法所需的任何格式构造连接字符串。
发布于 2009-05-13 19:47:18
监听程序是否在oracle服务器上设置并运行?它是否接受您连接到的数据库的实例/服务的连接?你检查过lsnrctl状态了吗?您是否尝试过打开sqlnet日志记录和侦听器日志记录,以查看您是否正在从远程站点建立到数据库的连接,以及listner日志中记录了什么错误来说明其拒绝服务的原因?监听程序是接受tcp连接还是只接受IPC连接?如果不侦听tcp连接,它将不接受远程连接。
发布于 2009-05-13 19:48:46
首先使用tnsping检查连通性。如果可以,请尝试使用sqlplus进行连接。如果tnsping失败,则说明您使用的服务名称不正确,或者没有正确配置客户端。如果您依赖本地配置,则要编辑的文件是ORAHOME\NETWORK\ADMIN中的tnsnames.ora,它需要配置设置才能定位服务器,其中包括主机、端口和服务名称。
https://stackoverflow.com/questions/859491
复制相似问题