程序调用配置文件连接oracle数据库,报错提示ORA-12505, TNS:listener does not currently know of SID

本文解析了使用JDBC连接数据库时需指定SID_NAME而非SERVICES_NAME的细节,对比PLSQL仅需SERVICES_NAME的特性。并提供查询SID_NAME的SQL语句,助您正确配置数据库连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jdbc连接数据库的时候,需要使用数据库的sid_name,而不是数据库的services_name.而使用plsql连接数据库的时候,只需要数据库的services_name即可,所以修改连接字符串中的services_name 为sid_name.
查询sid_name的方法
 

select INSTANCE_NAME from v$instance;
### 解决方案概述 当遇到 `ORA-12514` 错误时,通常意味着客户端尝试连接到的数据库实例未被监听器识别。这可能是由于配置文件中的设置不正确或监听器未能注册相应的服务所致。 ### 配置 Listener 文件 为了使监听器能够正常工作并识别所需的服务,需确保 `listener.ora` 和 `tnsnames.ora` 的配置无误。以下是具体的调整建议: #### 修改 `listener.ora` 在 `listener.ora` 中添加必要的记录来指定监听地址和服务名称。例如,在默认路径下找到该文件,并编辑如下所示[^3]: ```plaintext LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME = orcl) ) ) ``` #### 更新 `tnsnames.ora` 同样地,在同一目录下的 `tnsnames.ora` 文件也需要更新以匹配上述更改。确保其中包含了目标数据库的有效条目,如下面的例子所展示: ```plaintext ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) ``` ### 启动和重启监听器 完成以上修改之后,应当重新启动监听器以便应用新的配置。可以使用以下命令来进行操作[^2]: 对于 Linux 或 Unix 系统: ```bash lsnrctl stop lsnrctl start ``` 对于 Windows 系统,则可以通过图形界面管理工具或者命令提示符执行相应指令: ```cmd net stop oracleOraDb11g_home1TNSListener net start oracleOraDb11g_home1TNSListener ``` ### 检查状态 最后一步是验证监听器的状态以及它是否已成功注册了预期的服务。运行下列命令可获取这些信息[^1]: ```bash lsnrctl status ``` 如果一切顺利的话,输出应该会显示至少有一个正在运行的服务与之前定义的名字相吻合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值