客户数据库版本为oracle 11.2.0.4,在给客户巡检数据库过程中,进行DB Alert Log分析,发现alertSID.log特别大,使用vi进行编辑查看发现,日志文件中出现大量Fatal NI connect error 12170/TNS-12535: TNS:operation timed out/TNS-00505: Operation timed out告警信息,如下图所示:

Oracle告警处理:Alert日志出现大量Fatal NI connect error 12170告警_error 12170

大量的12710/12535/00505告警日志使alert log变得非常大,使整个告警日志易读性很差,为了后期维护方便,对alert日志大量连接报错告警信息进行处理。

1、原因分析

查询官方文档了解到本次相关alert告警信息本质上还是消息,其实不属于报错范畴,消息显示指定的客户端(IP地址)连接超时。在11gR1之前,类似‘Fatal NI connect error 12170’的信息将被记录到 sqlnet.log,在11gR1以后,是由于数据库新特性自动诊断存储仓库(ADR)特性默认开启导致这些信息写入到了alert日志文件。

2、解决办法

2.1、oracle单实例(windows环境为例)

windows环境下直接找到相应文件进行内容添加即可,若是linux单机非ASM环境,切换到oracle用户下操作即可。

在sqlnet.ora文件里面增加如下内容:

SQLNET.EXPIRE_TIME=10

DIAG_ADR_ENABLED = OFF

SQLNET.INBOUND_CONNECT_TIMEOUT=0

Oracle告警处理:Alert日志出现大量Fatal NI connect error 12170告警_实战_02

在listener.ora文件中增加如下内容:

DIAG_ADR_ENABLED_LISTENER = OFF

INBOUND_CONNECT_TIMEOUT_LISTENER = 0 

Oracle告警处理:Alert日志出现大量Fatal NI connect error 12170告警_sqlnet_03

进行监听的重启或者重新加载监听,让新增参数生效,如图:

Oracle告警处理:Alert日志出现大量Fatal NI connect error 12170告警_error 12170_04

在接下来的时间进行trace日志的观察,不在生成Fatal NI connect error 12170日志。

2.2、rac数据库处理

若数据库为rac数据库,处理方式和单机基本差不多。修改完成了为了不影响使用,两个节点都需要进行监听的重新加载。具体操作如下:

1、使用lsnrctl status查看listener.ora路径,如下:

su - grid

[grid@xiaozc2:/home/grid]$lsnrctl status

Oracle告警处理:Alert日志出现大量Fatal NI connect error 12170告警_oracle_05

2、修改监听文件,将如下内容添加进文件,需要rac两个节点都执行,如下:

[grid@xiaozc1:/home/grid]$cd /g01/grid/app/11.2.0/grid/network/admin

[grid@xiaozc1:/g01/grid/app/11.2.0/grid/network/admin]$ls

endpoints_listener.ora  listener.ora  listener.ora.bak  samples  shrept.lst  sqlnet.ora

[grid@xiaozc1:/g01/grid/app/11.2.0/grid/network/admin]$vi listener.ora

INBOUND_CONNECT_TIMEOUT_LISTENER = 0 --new add

DIAG_ADR_ENABLED_LISTENER = OFF --new add

[grid@xiaozc2:/home/grid]$cd /g01/grid/app/11.2.0/grid/network/admin

[grid@xiaozc2:/g01/grid/app/11.2.0/grid/network/admin]$ls

endpoints_listener.ora  listener.ora  listener.ora.bak  samples  shrept.lst  sqlnet.ora

[grid@xiaozc2:/g01/grid/app/11.2.0/grid/network/admin]$vi listener.ora

INBOUND_CONNECT_TIMEOUT_LISTENER = 0 --new add

DIAG_ADR_ENABLED_LISTENER = OFF --new add

Oracle告警处理:Alert日志出现大量Fatal NI connect error 12170告警_实战_06

3、修改sqlnet.ora文件

修改sqlnet.ora文件里,在两个节点的文件里都需要添加如下内容

[grid@xiaozc1:/g01/grid/app/11.2.0/grid/network/admin]$vi sqlnet.ora

# sqlnet.ora.xiaozc1 Network Configuration File: /g01/grid/app/11.2.0/grid/network/admin/sqlnet.ora.xiaozc1

# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

ADR_BASE = /g01/grid/app/grid

DIAG_ADR_ENABLED = OFF --new add

SQLNET.INBOUND_CONNECT_TIMEOUT =0 --new add

[grid@xiaozc2:/g01/grid/app/11.2.0/grid/network/admin]$vi sqlnet.ora

# sqlnet.ora.xiaozc2 Network Configuration File: /g01/grid/app/11.2.0/grid/network/admin/sqlnet.ora.xiaozc2

# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

ADR_BASE = /g01/grid/app/grid

DIAG_ADR_ENABLED = OFF --new add

SQLNET.INBOUND_CONNECT_TIMEOUT =0 --new add

Oracle告警处理:Alert日志出现大量Fatal NI connect error 12170告警_oracle_07

4、两个节点都重新加载监听

[grid@xiaozc1:/home/grid]$lsnrctl      

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 30-MAY-2022 18:11:16

Copyright (c) 1991, 2013, Oracle.  All rights reserved. Welcome to LSNRCTL, type "help" for information.

LSNRCTL> reload

[grid@xiaozc2:/home/grid]$lsnrctl      

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 30-MAY-2022 18:12:16

Copyright (c) 1991, 2013, Oracle.  All rights reserved. Welcome to LSNRCTL, type "help" for information.

LSNRCTL> reload

Oracle告警处理:Alert日志出现大量Fatal NI connect error 12170告警_error 12170_08

重新加载监听后,经过观察,alert日志文件的Fatal NI connect error 12170告警消失。