前面新裝了11GR2 RAC,某天在作巡檢的時候發現alert日誌中存在以下報錯
Fatal NI connect error 12170.sql
VERSION INFORMATION:
TNS for Linux: Version 11.2.0.4.0 - Production
Oracle Bequeath NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
Time: 23-MAY-2019 10:49:06
Tracing not turned on.
Tns error struct:
ns main err code: 12535
TNS-12535: TNS:operation timed out
ns secondary err code: 12560
nt main err code: 505
TNS-00505: Operation timed out
nt secondary err code: 110
nt OS err code: 0
Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=172.16.100.116)(PORT=38136))
Thu May 23 10:49:19 2019
觸發緣由:
是因爲程序異常斷開致使超時,11g R1若是出現如上的錯誤信息會寫入到sqlnet.log,11g R2會寫入到alert.log,
其實出現此錯誤是正常的現象。服務器
若是從深層次分析爲何出現這些錯誤,詳細以下:
一個客戶端鏈接整個步驟:
一、客戶端發起一個connection鏈接監聽
二、監聽啓動一個專屬進程(服務器進程,也就是咱們一般說的LOCA=NO進程)用於接收這個connection
三、在專屬進程啓動以後,監聽會將這個connection傳遞給這個專屬進程
四、專屬進程經過這個connection來跟客戶端握手
五、專屬進程跟客戶端信息交換須要創建一個session
六、session打開session
當在以上的第3步到第4步時客戶端關閉,因此當專屬進程嘗試跟客戶端聯繫時發現鏈接已關閉時,就會報出咱們看到的錯誤!!tcp
若是不想讓這些信息打印在alert日誌中,設置以下:
在sqlnet.ora設置
DIAG_ADR_ENABLED = OFF
在listener.ora設置
DIAG_ADR_ENABLED_ = OFF
重啓監聽日誌