Nagois監控oracle資料庫注意的地方

lusklusklusk發表於2017-01-22

客戶端的nagios使用者必須加入oracle使用者組

/etc/oratab檔案必須存在,且ORACLE_SID:ORACLE_HOME必須存在
nagios使用者的.bash_profile檔案必須有ORACLE_SID和ORACLE_HOME變數


nagios客戶端 必須在nagios、oracle、root三個使用者下執行如下都正常的時候,nagios服務端才不會報錯
/usr/local/nagios/libexec/check_oracle --login SIDNAME


-- login tnsname相當於既監控了listener,也監控了DB


/usr/local/nagios/libexec/check_oracle中有如下內容
  echo "  $PROGNAME --tns "
  echo "  $PROGNAME --db "
  echo "  $PROGNAME --login "
  echo "  $PROGNAME --connect "
  echo "  $PROGNAME --cache     "
  echo "  $PROGNAME --tablespace      "
  echo "  $PROGNAME --oranames "
  echo "  $PROGNAME --tns <Oracle Sid or Hostname/IP address>"
  echo "  $PROGNAME --db <ORACLE_SID>"
  echo "  $PROGNAME --login <ORACLE_SID>"
  echo "  $PROGNAME --connect <ORACLE_SID>"
  echo "  $PROGNAME --cache <ORACLE_SID> <USER> <PASS> <CRITICAL> <WARNING>"
  echo "  $PROGNAME --tablespace <ORACLE_SID> <USER> <PASS> <TABLESPACE> <CRITICAL> <WARNING>"
  echo "  $PROGNAME --oranames <Hostname>"



其實發現 login時,sid和tnsname都可以正常使用 (客戶端nagios和oracle使用者執行如下語句都正常)
/usr/local/nagios/libexec/check_oracle --login ORACLE_SID(root使用者執行也正常,nagios服務端正常不報錯)
/usr/local/nagios/libexec/check_oracle --login tnsname( 但是 root使用者執行會報錯,nagios服務端也報錯,
除非把客戶端
/etc/oratab中SID名稱修改為tnsname


Dataguard情況的備庫環境下,本機的sid和本機的tnsname一般是不同的
使用sid時,發現監控的是主庫
使用tnsname時,nagios客戶端的nagios、oracle執行/usr/local/nagios/libexec/check_oracle --login tnsname都正常,
但是nagios客戶端的root執行/usr/local/nagios/libexec/check_oracle --login tnsname又報錯,從而nagios服務端也報錯,
除非在nagios客戶端修改/etc/oratab中SID名稱為tnsname名稱






如下dwdg既非SID也非tnsname,則報錯,oracle使用者下和root下報錯是不一樣的
[oracle@dwdg ~]$ /usr/local/nagios/libexec/check_oracle --login dwdg
CRITICAL - ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA
[root@dwdg ~]# /usr/local/nagios/libexec/check_oracle --login dwdg
Cannot determine ORACLE_HOME for sid dwdg


如下DWDG138是tnsname的時候,關閉監聽,則報錯,oracle使用者下和root下報錯是一樣的,說明 使用login tnsname 可以監控監聽
[root@dwdg ~]# /usr/local/nagios/libexec/check_oracle --login DWDG138
CRITICAL - ORA-12541: TNS:no listener
[oracle@dwdg ~]$ /usr/local/nagios/libexec/check_oracle --login DWDG138
CRITICAL - ORA-12541: TNS:no listener


如下DWDG138是tnsname的時候,監聽正常,修改/etc/oratab中SID名稱為DWDG138,但是DB的實際SID是DW,但是關閉了DB,則報錯,
說明 使用login tnsname可以監控監聽和DB

[root@dwdg ~]# /usr/local/nagios/libexec/check_oracle --login DWDG138
CRITICAL - ORA-01034: ORACLE not available


此外login tnsname僅來自ORACLE_HOME/network/admin/tnsnames.ora,因ERP環境tns為ORACLE_HOME/network/admin/SID_hostname/tnsnames.ora,則ERP環境下需要cp ORACLE_HOME/network/admin/SID_hostname/tnsnames.ora  ORACLE_HOME/network/admin/tnsnames.ora

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2132787/,如需轉載,請註明出處,否則將追究法律責任。

相關文章