2025年1月23日 星期四

sqlplus / as sysdba 連線緩慢之案例

Oracle 版本: 19.21 

OS 版本: AIX 7.2


問題描述:

使用 sqlplus / as sysdba 連線時,等很久才連線進去 :


問題分析:

使用 truss 指令對 sqlplus 進行 trace :

[oracle@db19c ~]$ truss -aefdo /tmp/truss.trc sqlplus / as sysdba


從 truss.trc 發現連線過程中,讀取 message file 花了很久的時間 :


這個現象有可能為 Bug 32550751 - MGA Related Operations on AIX Might Cause Performance Issues ,不過此 Bug 在 19.12 之後就已經修復,目前 DB 版本為 19.21 ,應該是不符合 Bug 定義。


另一種可能為 netsvc.conf 的 hosts 設定有誤,檢查 netsvc.conf 檔案權限以及 hosts 內容 :


發現 hosts 的設定為 local, bind , 在 AIX 平台上 bind 的設定會依據下列順序來解析 :

1. 於 /etc/hosts 尋找 IPv6 位址

2. 於 DNS 尋找 IPv6 位址

3. 於 /etc/hosts 尋找 IPv4 位址

4. 於 DNS 尋找 IPv4 位址


在沒有設定 IPv6 的情況下,到了第三順位才會解析到 IPv4 ,也因此造成了 sqlplus / as sysdba 連線緩慢的情況,如果將 bind 修改為 bind4 ,那麼它就只會尋找 IPv4 位址。


解決方法:

將 netsvc.conf 裡面 hosts 中的 bind 改為 bind4 :

hosts = local, bind4


改完後重新測試 sqlplus / as sysdba ,連線速度恢復正常。