diff options
Diffstat (limited to 'plugins-scripts')
| -rwxr-xr-x | plugins-scripts/check_oracle.sh | 78 |
1 files changed, 65 insertions, 13 deletions
diff --git a/plugins-scripts/check_oracle.sh b/plugins-scripts/check_oracle.sh index 1a4d8ab6..d2a84fe7 100755 --- a/plugins-scripts/check_oracle.sh +++ b/plugins-scripts/check_oracle.sh | |||
| @@ -36,6 +36,7 @@ print_usage() { | |||
| 36 | echo "Usage:" | 36 | echo "Usage:" |
| 37 | echo " $PROGNAME --tns <Oracle Sid or Hostname/IP address>" | 37 | echo " $PROGNAME --tns <Oracle Sid or Hostname/IP address>" |
| 38 | echo " $PROGNAME --db <ORACLE_SID>" | 38 | echo " $PROGNAME --db <ORACLE_SID>" |
| 39 | echo " $PROGNAME --oranames <Hostname>" | ||
| 39 | echo " $PROGNAME --help" | 40 | echo " $PROGNAME --help" |
| 40 | echo " $PROGNAME --version" | 41 | echo " $PROGNAME --version" |
| 41 | } | 42 | } |
| @@ -52,13 +53,15 @@ print_help() { | |||
| 52 | echo "--db=SID" | 53 | echo "--db=SID" |
| 53 | echo " Check local database (search /bin/ps for PMON process and check" | 54 | echo " Check local database (search /bin/ps for PMON process and check" |
| 54 | echo " filesystem for sgadefORACLE_SID.dbf" | 55 | echo " filesystem for sgadefORACLE_SID.dbf" |
| 56 | echo "--oranames=Hostname" | ||
| 57 | echo " Check remote Oracle Names server" | ||
| 55 | echo "--help" | 58 | echo "--help" |
| 56 | echo " Print this help screen" | 59 | echo " Print this help screen" |
| 57 | echo "--version" | 60 | echo "--version" |
| 58 | echo " Print version and license information" | 61 | echo " Print version and license information" |
| 59 | echo "" | 62 | echo "" |
| 60 | echo "If the plugin doesn't work, check that the $ORACLE_HOME environment" | 63 | echo "If the plugin doesn't work, check that the ORACLE_HOME environment" |
| 61 | echo "variable is set, that $ORACLE_HOME/bin is in your PATH, and the" | 64 | echo "variable is set, that ORACLE_HOME/bin is in your PATH, and the" |
| 62 | echo "tnsnames.ora file is locatable and is properly configured." | 65 | echo "tnsnames.ora file is locatable and is properly configured." |
| 63 | echo "" | 66 | echo "" |
| 64 | echo "When checking Local Database status your ORACLE_SID is case sensitive." | 67 | echo "When checking Local Database status your ORACLE_SID is case sensitive." |
| @@ -78,27 +81,76 @@ case "$1" in | |||
| 78 | ;; | 81 | ;; |
| 79 | esac | 82 | esac |
| 80 | 83 | ||
| 84 | # Hunt down a reasonable ORACLE_HOME | ||
| 85 | if [ -z "$ORACLE_HOME" ] ; then | ||
| 86 | # Adjust to taste | ||
| 87 | for oratab in /var/opt/oracle/oratab /etc/oratab | ||
| 88 | do | ||
| 89 | [ ! -f $oratab ] && continue | ||
| 90 | ORACLE_HOME=`IFS=: | ||
| 91 | while read SID ORACLE_HOME junk; | ||
| 92 | do | ||
| 93 | if [ "$SID" = "$2" ] ; then | ||
| 94 | echo $ORACLE_HOME; | ||
| 95 | exit; | ||
| 96 | fi; | ||
| 97 | done < $oratab` | ||
| 98 | [ -n "$ORACLE_HOME" ] && break | ||
| 99 | done | ||
| 100 | fi | ||
| 101 | # Last resort | ||
| 102 | [ -z "$ORACLE_HOME" -a -d $PROGPATH/oracle ] && ORACLE_HOME=$PROGPATH/oracle | ||
| 103 | |||
| 104 | if [ -z "$ORACLE_HOME" -o ! -d "$ORACLE_HOME" ] ; then | ||
| 105 | echo "Cannot determine ORACLE_HOME for sid $2" | ||
| 106 | exit $STATE_UNKNOWN | ||
| 107 | fi | ||
| 108 | PATH=$PATH:$ORACLE_HOME/bin | ||
| 109 | LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib | ||
| 110 | export ORACLE_HOME PATH LD_LIBRARY_PATH | ||
| 111 | |||
| 81 | case "$cmd" in | 112 | case "$cmd" in |
| 82 | --tns) | 113 | --tns) |
| 83 | export tnschk=` tnsping $2` | 114 | tnschk=` tnsping $2` |
| 84 | export tnschk2=` echo $tnschk | grep -c OK` | 115 | tnschk2=` echo $tnschk | grep -c OK` |
| 85 | export tnschk3=` echo $tnschk | cut -d\( -f7 | sed y/\)/" "/` | ||
| 86 | if [ ${tnschk2} -eq 1 ] ; then | 116 | if [ ${tnschk2} -eq 1 ] ; then |
| 117 | tnschk3=` echo $tnschk | sed -e 's/.*(//' -e 's/).*//'` | ||
| 87 | echo "OK - reply time ${tnschk3} from $2" | 118 | echo "OK - reply time ${tnschk3} from $2" |
| 88 | exit 0 | 119 | exit $STATE_OK |
| 89 | else | 120 | else |
| 90 | echo "No TNS Listener on $2" | 121 | echo "No TNS Listener on $2" |
| 91 | exit $STATE_CRITICAL | 122 | exit $STATE_CRITICAL |
| 92 | fi | 123 | fi |
| 93 | ;; | 124 | ;; |
| 125 | --oranames) | ||
| 126 | namesctl status $2 | awk ' | ||
| 127 | /Server has been running for:/ { | ||
| 128 | msg = "OK: Up" | ||
| 129 | for (i = 6; i <= NF; i++) { | ||
| 130 | msg = msg " " $i | ||
| 131 | } | ||
| 132 | status = '$STATE_OK' | ||
| 133 | } | ||
| 134 | /error/ { | ||
| 135 | msg = "CRITICAL: " $0 | ||
| 136 | status = '$STATE_CRITICAL' | ||
| 137 | } | ||
| 138 | END { | ||
| 139 | print msg | ||
| 140 | exit status | ||
| 141 | }' | ||
| 142 | ;; | ||
| 94 | --db) | 143 | --db) |
| 95 | export pmonchk=`ps -ef | grep -v grep | grep ${2} | grep -c pmon` | 144 | pmonchk=`ps -ef | grep -v grep | grep ${2} | grep -c pmon` |
| 96 | if [ -e $ORACLE_HOME/dbs/sga*${2}* ] ; then | 145 | if [ ${pmonchk} -ge 1 ] ; then |
| 97 | if [ ${pmonchk} -eq 1 ] ; then | 146 | echo "${2} OK - ${pmonchk} PMON process(es) running" |
| 98 | export utime=`ls -la $ORACLE_HOME/dbs/sga*$2* | cut -c 43-55` | 147 | exit $STATE_OK |
| 99 | echo "${2} OK - running since ${utime}" | 148 | #if [ -f $ORACLE_HOME/dbs/sga*${2}* ] ; then |
| 100 | exit $STATE_OK | 149 | #if [ ${pmonchk} -eq 1 ] ; then |
| 101 | fi | 150 | #utime=`ls -la $ORACLE_HOME/dbs/sga*$2* | cut -c 43-55` |
| 151 | #echo "${2} OK - running since ${utime}" | ||
| 152 | #exit $STATE_OK | ||
| 153 | #fi | ||
| 102 | else | 154 | else |
| 103 | echo "${2} Database is DOWN" | 155 | echo "${2} Database is DOWN" |
| 104 | exit $STATE_CRITICAL | 156 | exit $STATE_CRITICAL |
