7

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

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

我收到以下错误:

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

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

我使用了一些数据库查询来找出 SID 名称,但我仍然收到相同的错误。请帮我解决问题。

谢谢你的时间..

4

2 回答 2

11

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');

请参阅此网址:

检查 oracle sid 和数据库名称

于 2012-12-03T21:10:04.090 回答
1

我也面临这个问题。带有甲骨文的 Linux11.2.0.1.

我发现连接字符串必须是:

sqlplus hr@liverpool:1521:DEMO

并不是

sqlplus hr@liverpool:1521/DEMO
于 2014-01-08T12:32:37.220 回答