一尘不染

Oracle SID和服务名称;连接问题

linux

我正在尝试通过sql developer连接到远程服务器上的oracle db。我将连接详细信息复制到tnsnames,并且能够连接到数据库。

但是我有另一个与sqldeveloper相同的数据库应用程序,当我尝试建立连接时,我不断收到此错误。此应用程序使用需要主机名和SID的oracle
jdbc瘦客户端。

我收到以下错误:

java.sql.SQLException:侦听器拒绝连接,并出现以下错误:ORA-12505,TNS:listener当前不知道连接描述符中给出的SID

在进行故障排除时,我更改了sqldeveloper中的tns选项,并选择了基本选项以找出问题所在,并且我意识到由于正确的服务名称而能够连接到它,并且无法通过SID连接到数据库甚至通过sqldeveloper命名。

我已经使用了一些数据库查询来找出SID名称,但仍然出现相同的错误。请帮助我进行故障排除。

谢谢你的时间..


阅读 920

收藏
2020-06-07

共1个答案

一尘不染

ORA-12505表示您的客户端传递了一个SID,服务器端的侦听器根本无法识别。

在10G及更高版本中,您可以使用EZ connect而不用像这样配置服务器端:

sqlplus hr@liverpool:1521/DEMO

hr is the user name
liverpool is the server name
1521 is the port the listener for the DB is listening on
DEMO is the database SID

(要么)

如果仍要使用tnsnames.ora,请尝试从客户端运行tnsping SID。

在LINUX上,您也可以让ORACLE从本地路径读取tnsnames.ora文件-只需将TNS_ADMIN设置为tnsnames.ora文件所在的目录即可。

否则,您需要在客户端上的$ ORACLE_HOME / network / admin中配置tnsnames.ora。


如果您需要知道数据库SID,请使用以下命令:

从双选择sys_context(’userenv’,’db_name’);

2020-06-07