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

时间:2012-12-03 21:01:27

标签: database linux oracle oracle11g

我试图通过sql developer连接到远程服务器上的oracle db。我将连接细节复制到tnsnames,我可以连接到db。

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

我收到以下错误:

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

中给出的SID

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

我已经使用了一些数据库查询来查找SID名称,但我仍然遇到同样的错误。请帮我排除故障。

谢谢你的时间..

2 个答案:

答案 0 :(得分:11)

ORA-12505表示您的客户端传递了服务器端侦听器的SID 根本没有认识到。

在10G及以上您可以在不配置服务器端的情况下使用EZ连接 像这样:

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

(OR)

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

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

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


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

从双重选择sys_context(' userenv',' db_name');

请参阅此网址:

Checking oracle sid and database name

答案 1 :(得分:0)

我也面临这个问题。 Linux with oracle 11.2.0.1.

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

sqlplus hr@liverpool:1521:DEMO

而不是

sqlplus hr@liverpool:1521/DEMO