监听重启之后的短时间会报错ORA-12516

本文记录了一次监听重启后出现ORA-12516错误的情况,详细介绍了错误发生的原因及如何通过等待实例动态注册来解决这一问题。
监听刚刚重启之后的一段时间会报错:
SQL> conn system/www@testrac
ERROR:
ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程序
此时查看监听状态:
[oracle@ractest4 ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.1.0.6.0 - Production on 26-DEC-2013 09:15:20

Copyright (c) 1991, 2007, Oracle. All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER_RACTEST4
Version TNSLSNR for Linux: Version 11.1.0.6.0 - Production
Start Date 26-DEC-2013 09:14:18
Uptime 0 days 0 hr. 1 min. 2 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /app/db_1/network/admin/listener.ora
Listener Log File /app/diag/tnslsnr/ractest4/listener_ractest4/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=20.18.15.170)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=20.18.15.135)(PORT=1521)))
Services Summary...
Service "rac" has 1 instance(s).
Instance "rac1", status READY, has 1 handler(s) for this service...
Service "racXDB" has 1 instance(s).
Instance "rac1", status READY, has 1 handler(s) for this service...
Service "rac_XPT" has 1 instance(s).
Instance "rac1", status READY, has 1 handler(s) for this service...
The command completed successfully

发现本节点的实例还未动态注册进来,这种报错会持续到实例完成动态注册:
[oracle@ractest4 ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.1.0.6.0 - Production on 26-DEC-2013 09:15:49

Copyright (c) 1991, 2007, Oracle. All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER_RACTEST4
Version TNSLSNR for Linux: Version 11.1.0.6.0 - Production
Start Date 26-DEC-2013 09:14:18
Uptime 0 days 0 hr. 1 min. 31 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /app/db_1/network/admin/listener.ora
Listener Log File /app/diag/tnslsnr/ractest4/listener_ractest4/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=20.18.15.170)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=20.18.15.135)(PORT=1521)))
Services Summary...
Service "rac" has 2 instance(s).
Instance "rac1", status READY, has 1 handler(s) for this service...
Instance "rac2", status READY, has 2 handler(s) for this service...
Service "racXDB" has 2 instance(s).
Instance "rac1", status READY, has 1 handler(s) for this service...
Instance "rac2", status READY, has 1 handler(s) for this service...
Service "rac_XPT" has 2 instance(s).
Instance "rac1", status READY, has 1 handler(s) for this service...
Instance "rac2", status READY, has 2 handler(s) for this service...
The command completed successfully

实例完成动态注册之后,连接时不再报错ORA-12516。
PLSQL登录时出现的ORA-12516错误,通常表示监听器无法找到可用的服务器进程来处理连接请求。此问题可能由多种原因引起,包括数据库实例未正确注册到监听器、监听器配置不当或数据库服务未启动等。以下是解决ORA-12516错误的几种常见方法: ### 1. 检查数据库实例是否已注册到监听器 确保数据库实例已经成功注册到Oracle监听器。可以通过执行以下命令查看监听状态: ```bash lsnrctl status ``` 在输出中,确认数据库实例的服务名和实例名已经列在“Services Summary”部分。如果没有看到预期的数据库服务,可以尝试手动注册数据库实例。 ### 2. 配置`listener.ora`文件 如果数据库实例没有自动注册,可以考虑手动配置监听器以确保它知道如何路由连接请求到正确的数据库实例。编辑`$ORACLE_HOME/network/admin/listener.ora`文件,添加或修改监听器的配置项,例如: ```plaintext SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1) (SID_NAME = orcl) ) ) ``` 保存更改后,重启监听器以应用新的配置: ```bash lsnrctl stop lsnrctl start ``` ### 3. 确保数据库服务正在运行 检查数据库服务是否已启动。可以通过以下命令启动数据库服务(假设使用的是Linux系统): ```bash sqlplus / as sysdba SQL> startup ``` 如果数据库服务尚未启动,则需要先启动它以便监听器能够识别并分配连接请求。 ### 4. 修改`tnsping`测试连接 使用`tnsping`工具测试与数据库的连接情况,这有助于诊断网络问题或配置错误。运行如下命令: ```bash tnsping <TNS_ALIAS> ``` 其中`<TNS_ALIAS>`是你想要测试的TNS别名。根据返回的结果,你可以判断出是否存在网络障碍或者TNS配置不正确的问题。 ### 5. 调整初始化参数 有时候,调整某些初始化参数也可以帮助解决问题。比如,设置`LOCAL_LISTENER`参数指向正确的监听地址。通过SQL*Plus连接到数据库,并执行: ```sql ALTER SYSTEM SET LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))'; ``` 之后,重新加载监听器配置: ```bash lsnrctl reload ``` ### 6. 检查Oracle Net Configuration Assistant 利用Oracle提供的Net Configuration Assistant工具检查和更新网络配置。这个图形界面工具可以帮助用户更直观地管理和调试Oracle网络服务配置。 ### 7. 审核日志文件 最后但同样重要的是,查阅相关日志文件对于理解问题根源非常有帮助。查看监听器的日志文件(通常位于`$ORACLE_HOME/network/log`目录下),寻找任何可能指示失败原因的信息。 以上步骤应该能有效协助解决PLSQL登录时报ORA-12516错误的情况。如果问题仍然存在,请进一步检查服务器上的防火墙设置以及客户端与服务器之间的网络连通性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值