首页 文章

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

提问于
浏览
6

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

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

我收到以下错误:

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

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

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

谢谢你的时间..

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,请使用:

    从dual中选择sys_context('userenv','db_name');

    看到这个网址:

    Checking oracle sid and database name

  • 0

    我也面临着这个问题 . Linux与oracle 11.2.0.1.

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

    sqlplus hr@liverpool:1521:DEMO
    

    并不是

    sqlplus hr@liverpool:1521/DEMO
    

相关问题