如何使用SQLPLUS | Oracle即时客户端| ORA-12545连接到Oracle

如何使用SQLPLUS | Oracle即时客户端| ORA-12545连接到Oracle,oracle,sqlplus,Oracle,Sqlplus,使用SQL Developer成功连接,但在Oracle Instant Client中使用sqlplus时,会出现以下问题 方法1: [integrator@a-esb-app01 instantclient_19_8]$ ./sqlplus EGOINT@139.138.267.202:1521:EPROD SQL*Plus: Release 19.0.0.0.0 - Production on Tue Dec 22 18:14:36 2020 Version 19.8.0.0.0 Co

使用SQL Developer成功连接,但在Oracle Instant Client中使用sqlplus时,会出现以下问题

方法1:

[integrator@a-esb-app01 instantclient_19_8]$ ./sqlplus EGOINT@139.138.267.202:1521:EPROD

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Dec 22 18:14:36 2020
Version 19.8.0.0.0

Copyright (c) 1982, 2020, Oracle.  All rights reserved.

Enter password:
ERROR:
ORA-12545: Connect failed because target host or object does not exist


Enter user-name: egoint
Enter password:
ERROR:
ORA-12162: TNS:net service name is incorrectly specified
方法2:

[integrator@a-esb-app01 instantclient_19_8]$ ./sqlplus EGOINT@139.138.267.202:1521/EPROD

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Dec 22 18:18:13 2020
Version 19.8.0.0.0

Copyright (c) 1982, 2020, Oracle.  All rights reserved.

Enter password:
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
不确定上面哪种方法是正确的,连接字符串或服务器端所需的任何更改有什么问题

注意:我能够成功连接另一台Oracle服务器。因此,使用以下方法修复InstantClient的任何问题:

./sqlplus egoint/egoint@(description=(address=(protocol=tcp)(host=139.138.267.202)(port=1521))(connect_data=(sid=EPROD)))

从SQL Developer连接时,是否提供SID或服务名称?第一个JDBC语法使用SID,Easy Connect不支持SID。第二个使用服务名称(EPROD部分)。我猜想,对于其他服务器,您可以连接到SID和服务名称是相同的,但它们不适用于有问题的服务器。在DB server计算机上运行
lsnrctl services
以获取有效值,或询问您的DBA。@AlexPoole:我没有访问oracle server的权限。它是我安装在linux上的客户机,能够使用我在回答中提到的长字符串连接它,它是正确的,所以请向您的DBA询问要使用的服务名称。服务器端不需要更改,您只需要知道它当前是如何配置的。或者,如果仍要使用SID,请使用回答中显示的长连接字符串,或者设置一个本地
tnsnames.ora
文件,为该连接信息提供一个TNS别名。通常,您为这个复杂字符串定义一个别名。通常这是在
tnsnames.ora
文件中完成的。谷歌,你应该找到很多例子。你真的需要找到(或一个)服务名称并开始使用它。通过服务连接将使您能够访问某些Oracle高可用性功能。