生產環境中 DBLink 查詢遠程數據庫時程序卡死,SQL*Net 追蹤顯示 received partial fragment、multiple TNS frames in one packet。根因為 Cisco ASA 防火牆默認啟用 SQL*Net Inspection(端口 1521),其檢查引擎將多個 TNS 幀聚合在單一 TCP 包中處理,導致數據包重組錯誤。
SQLNet: received partial fragment, frag len: 2011, partial frag len: 1380, 631 bytes neededASA(config)# class-map sqlnet-port
ASA(config-cmap)# match port tcp eq 1521
ASA(config-cmap)# exit
ASA(config)# policy-map sqlnet_policy
ASA(config-pmap)# class sqlnet-port
ASA(config-pmap-c)# no inspect sqlnet
ASA(config-pmap-c)# exit
ASA(config)# service-policy sqlnet_policy interface outside
CSCsr27940、CSCsr14351(需註冊用戶查看)Note 119706.1 Troubleshooting Guide TNS-12535 or ORA-12535 or ORA-12170 ErrorsSQLNet inspection 章節(Version 8.0)運維建議:跨防火牆 DBLink 建議使用非默認端口(如 1522)或協調網絡團隊關閉 SQL*Net Inspection;同步監控 V$SESSION_WAIT 事件 SQL*Net message from dblink 異常增長情況。