近日發現一套數據庫在節點一使用 sqlplus 登錄時反應巨慢,但在節點 2 卻很迅速登錄進去,節點一無任何報錯,只是反應巨慢,觀察大約需要 81s 的時間纔可以正常登錄。如下圖所示:
首先想到的是不是由於審計目錄過大的原因,因爲 sqlplus / as sysdba 使用的是操作系統鑑權,猜想在進行審計是寫入過慢導致,但去查看相關的目錄均不到 1G 大小,這種問題也無法通過其他類似 AWR 報告的東西查看。所以也想不到更好的辦法了,便只能去尋找幫助了,諮詢了一圈同事後無果,便灰溜溜的去 MOS 提 SR 了。
不過 SR 首先回復的也是目錄過大的問題,並給出瞭如下參考文檔 Slow SYSDBA OS authentication ( Doc ID 2225093.1 )
當在 MOS 上打開此文檔時發現給出的意見就是前面所提到的,感覺無果,繼續更新 SR。
Clearthe old OS audit files under /u01/app/oracle/admin/adump
第二次 SR 建議使用 truss 查看,如下命令:
truss -adefo/tmp/sqlplusconnection.log sqlplus / as sysdba
將 log 輸出以便檢查問題。
檢查此 log 後便定位於此文件 /etc/netsvc.conf ,oracle 用戶無權訪問 /etc/netsvc.conf 導致 sqlplus / as sysdba 去嘗試 LDAP 解析。但唯一的不同是您這裏訪問 /etc/netsvc.conf 時報的是 Err#25 ENOTTY 而不是 Err#13 EACCES。檢查下 RDBMS 屬主用戶是否對 /etc/netsvc.conf 有讀取權限,是否爲 664 權限,使用 oracle 用戶查看有訪問權限,權限無問題,並給出參考文檔 SQL*Plus Appears to Hang on Logon to the Database on IBM AIX (文檔 ID 2017323.1)
Correctthe permission for /etc/netsvc.conf to -rw-rw-r--.
# chmod664 /etc/netsvc.conf
當查看文件權限時無任何問題,文件內容可讀,但發現文件內容都是註釋行,那麼 SR的回覆是說明走的是默認的地址解析順序,即 DNS,NIS,本機 /etc/hosts。
所以我們可以讓本地解析優先,在 /etc/netsvc.conf 中增加這行:
hosts =local, bind4
保存退出後,sqlplus / as sysdba 則可正常登錄,那麼簡單說明一下此文件的作用及解析順序。
/etc/netsvc.conf 是 AIX 系統配置主機地址解析順序的,如果沒配置它,默認是按照DNS,NIS,本機 /etc/hosts 這樣的順序來的。所以如果 DNS 服務器響應比較慢,連接就會延遲。
hosts=local,bind4 就是設置先從本地解析,本地解析不了的 IPv4 地址再走 DNS 解析。詳情參考 IBM 官方文檔:
https://www.ibm.com/support/knowledgecenter/en/ssw_aix_72/filesreference/netsvc.conf.html
以下爲全英文, Google 翻譯雖不是標準但可湊合着看,哦了!
netsvc.conf File:該 /etc/netsvc.conf 中的文件是用來指定名稱解析的順序爲sendmail 的命令,調用 gethostbyname 子程序,gethostaddr 子程序和gethostent 子程序和別名分辨率的 sendmail 的命令。有幾種用於解析主機名和別名的機制。在調用 gethostbyname,gethostbyaddr 和 gethostent 子程序使用這些機制的解析名稱。存在默認順序,其中解析程序子例程嘗試使用解析主機名和Internet 協議(IP)地址的機制。
好咯,今天就到這裏了,詳細內容需查看官方文檔,感謝你能讀到這裏,如果此文對你有那麼一丁點的幫助,那麼只需要您點個 在看 或是 轉發,則是對我最大的支持。您的小小舉動將是我不斷更新的動力,騷年努力向上吧。
80%
推薦閱讀: