查看报警日志,发现TNS-12547不定时出现,其后紧跟ORA-609报错,如下:
TNS-12547: TNS:lost contact
? ?ns secondary err code: 12560
? ?nt main err code: 0
? ?nt secondary err code: 0
? ?nt OS err code: 0
opiodr aborting process unknownospid (1552) as a result of ORA-609
Tue Dec 07 16:08:46 2021
造成这种异常的原因为数据库的INBOUND_CONNECT_TIMEOUT参数设置的默认时间60秒太短,导致业务访问数据库时间一旦超过默认时间,连接进程就会被kill掉,
也就是opiodr aborting,ORA-609错误就会被记录到alert文件中,
不过这种异常不会导致服务异常. 作者:D-Cycle https://www.bilibili.com/read/cv15288550/ 出处:bilibili
解决此问题的方式可以增加参数INBOUND_CONNECT_TIMEOUT值,在Sqlnet.ora、Listener.ora两个文件中分别添加:
Sqlnet.ora:SQLNET.INBOUND_CONNECT_TIMEOUT=180
Listener.ora: INBOUND_CONNECT_TIMEOUT_listener_name=120
修改完成后,执行lsnrctl reload指令,不用重启监听
注意:假如INBOUND_CONNECT_TIMEOUT值设置为0 ,表示永不超时,但会导致系统资源被独占从而带来系统负载压力. 作者:D-Cycle https://www.bilibili.com/read/cv15288550/ 出处:bilibili
$ cat sqlnet.ora
# sqlnet.ora.miuu055 Network Configuration File: /adwl/oragrid/grid/network/admin/sqlnet.ora.miuu055
# Generated by Oracle configuration tools.
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
ADR_BASE = /adwl/oragrid/app
SQLNET.ENCRYPTION_TYPES_SERVER=(3DES168)
SQLNET.ENCRYPTION_SERVER=REQUIRED
SQLNET.INBOUND_CONNECT_TIMEOUT=0
AG_ADR_ENABLED=OFF
$ ls
endpoints_listener.ora listener.ora.bak.miuu055 listener11050711AM4355.bak shrept.lst sqlnet.ora20110726bak
listener.ora listener11050610PM1331.bak samples sqlnet.ora sqlnet11050711AM4355.bak
$ cat listener.ora
LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))) # line added by Agent
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))) # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent
DIAG_ADR_ENABLED_LISTENER=OFF
listener.ora: INBOUND_CONNECT_TIMEOUT_listenername
set to a value in seconds and determines how long a client has to provide the necessary authentication information to a database.
单位为秒,client须要在指定的时间内提交须要的认证信息。
sqlnet.ora: SQLNET.INBOUND_CONNECT_TIMEOUT
INBOUND_CONNECT_TIMEOUT_listenername is set to a value in seconds and determines how long a client has to complete its connect request to the listener after the network connection has been established.
单位为秒,client与监听建立连接后多久须要完毕连接请求
比如:
Sqlnet.ora: SQLNET.INBOUND_CONNECT_TIMEOUT=180
Listener.ora: INBOUND_CONNECT_TIMEOUT_listener_name=120
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




