ORA-12514: TNS:listener does not currently know of service问题原因

本文记录了一次解决Oracle数据库连接失败的经历。通过检查监听配置文件listener.ora并将其恢复为正确状态,最终解决了WAS测试程序无法连接数据库的问题。

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

今天上午打开WAS的测试程序,突然进不去了,看了下后台日志,提示数据库连不上

测试服务器上的数据库怎么突然连不上了呢?

重启Oracle之后还是连不上


接下来,常规套路

1、先用WAS控制台测试数据源,结果提示SID描述无效,莫名其妙

2、然后用Oracle的sqlplus命令在Windows控制台测试,提示

ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor

但是,直接使用sqlplus 用户名/密码是可以成功连接的,指定连接描述符就出现以上错误


看到这里,貌似猜到问题出到哪里了

到Oracle安装目录查看listener.ora文件,居然昨天被修改过,果断修改回来,重启Oracle,问题解决


### 解决 Oracle 数据库连接错误 ORA-12514:监听器无法识别连接描述符中请求的服务 当出现错误 "ORA-12514: TNS: listener does not currently know of service requested in connect descriptor" 时,通常意味着 Oracle 监听器未识别连接描述符中提供的服务名(SERVICE_NAME)。以下是常见的解决方法和配置建议。 #### 1. 检查监听器配置文件 `listener.ora` 监听器的配置文件 `listener.ora` 通常位于 `$ORACLE_HOME/network/admin` 目录中。确保在 `SID_LIST_LISTENER` 部分中配置了正确的数据库服务名。例如: ```text SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = your_service_name) (ORACLE_HOME = /u01/app/oracle/product/12.2.0/dbhome_1) (SID_NAME = your_sid) ) ) ``` 保存更改后,重新启动监听器以应用新配置: ```bash lsnrctl stop lsnrctl start ``` #### 2. 检查 `tnsnames.ora` 文件 确保客户端使用的 `tnsnames.ora` 文件中定义的服务名与数据库服务器上的服务名一致。例如: ```text YOUR_SERVICE = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = your_service_name) ) ) ``` 确保 `SERVICE_NAME` 与数据库注册的服务名匹配。 #### 3. 确认数据库服务已注册到监听器 连接到数据库并检查服务是否已正确注册到监听器: ```sql SQL> show parameter LOCAL_LISTENER; ``` 如果 `LOCAL_LISTENER` 配置不正确,可以使用以下命令更新: ```sql SQL> alter system set LOCAL_LISTENER='(ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521))'; ``` 重启数据库实例以确保服务正确注册到监听器。 #### 4. 使用动态注册验证服务 如果数据库使用动态注册,请确保数据库实例已启动,并且监听器正在运行。Oracle 实例启动时会自动向监听器注册服务名。可以使用以下命令检查监听器状态: ```bash lsnrctl status ``` 在输出中查找 `Service` 列表,确保请求的服务名出现在其中。 #### 5. 检查监听器日志文件 监听器日志文件通常位于 `$ORACLE_HOME/network/log/listener.log`。检查日志以获取注册失败或配置问题的线索。 #### 6. 使用 `sqlplus` 测试连接 使用 `sqlplus` 测试连接以验证配置是否正确: ```bash sqlplus username/password@your_service ``` 如果连接成功,则表示问题已解决;如果仍然失败,请检查错误信息并调整配置。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值