Oracle SID 和服务名称;连接问题
Posted
技术标签:
【中文标题】Oracle SID 和服务名称;连接问题【英文标题】:Oracle SID and Service name; connection problems 【发布时间】:2012-11-21 09:55:11 【问题描述】:我正在尝试通过 sql developer 连接到远程服务器上的 oracle db。我将连接详细信息复制到 tnsnames 并且能够连接到数据库。
但是我有另一个与 sqldeveloper 相同的数据库应用程序,当我尝试建立连接时,我不断收到此错误。此应用程序使用需要主机名和 SID 的 oracle jdbc 瘦客户端。
我收到以下错误:
java.sql.SQLException:侦听器拒绝连接并出现以下错误: ORA-12505, TNS:listener 目前不知道连接描述符中给出的 SID
在进行故障排除时,我更改了 sqldeveloper 中的 tns 选项,我选择了基本选项来找出问题所在,我意识到我能够连接到它,因为服务名称正确,但无法连接到db 通过 SID 名称甚至通过 sqldeveloper。
我使用了一些数据库查询来找出 SID 名称,但我仍然收到相同的错误。请帮我解决问题。
感谢您的宝贵时间..
【问题讨论】:
你能给我们你在 SQLDeveloper 和你的应用程序中使用的连接字符串吗?如有必要,请清除 IP! CONNECTION = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = 1521)) ( LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ) (FAILOVER_MODE = (TYPE = SELECT) (METHOD = BASIC) (RETRIES = 180) (DELAY = 5) ) ) 您说您只能使用服务名称进行连接,但在上述连接字符串中未指定服务名称。你是怎么得出这个连接字符串的?您是否尝试在应用程序中使用此连接字符串,指定的服务名称与您在 sqldeveloper 中指定的值相同? 【参考方案1】:我也面临这个问题。 Linux 与 oracle11.2.0.1.
我发现连接字符串一定是:
sqlplus hr@liverpool:1521:DEMO
而不是
sqlplus hr@liverpool:1521/DEMO
【讨论】:
【参考方案2】:ORA-12505 表示您的客户端传递了一个 SID,该 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,请使用:
select sys_context('userenv','db_name') from dual;
查看此网址:
Checking oracle sid and database name
【讨论】:
我只有连接描述,它指定了服务名称、主机名和端口。我不确定确切的 SID 名称。我也无权访问 v$ 视图。无论如何我可以运行查询并找出实际的 SID。 是的,我做到了。它返回给我一个值,我将其用作 SID。我一直遇到同样的问题:( 您的连接字符串中有 (SERVICE_NAME = )。 ORACLE 将寻找已定义此服务的侦听器;您是否尝试将 SID 放入 (SERVICE_NAME = your_db_sid) 确保连接字符串与运行数据库的 DBA 提供的匹配。让 DBA 在服务器上运行 tnsping SID 并尝试其结果。以上是关于Oracle SID 和服务名称;连接问题的主要内容,如果未能解决你的问题,请参考以下文章
Oracle 实例名(SID) 和 服务名(SERVICE_NAME)的区别
Oracle 实例名/服务名 请问SID和Service Name有什么区别啊
Oracle 实例名/服务名 请问SID和Service_Name有什么区别啊?
Oracle 实例名/服务名 请问SID和Service_Name有什么区别啊?
oracle12C安装完成后,尝试用PLSQL连接PDB数据库,发现个问题PDB有没有SID?使用服务名来连接还是用SID?