Module: check_mk
Branch: master
Commit: 922a5193dfc6ef56e48f4df302c0cbdc99a35c93
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=922a5193dfc6ef…
Author: Simon Betz <si(a)mathias-kettner.de>
Date: Mon Sep 10 13:24:44 2018 +0200
6492 mk_oracle: Add pre- or postfix to TNS alias
The SIDs are extracted from the process list via "ps -ef".
Some of the extracted SIDs may have a pre- or postfix in
tnsnames.ora, eg.
<br>
<code>
PRE_SID.POST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(Host = HOSTNAME)(Port = PORT))
(CONNECT_DATA = (SID = SID)(GLOBAL_NAME = SID.POSTFIX))
)
</code>
Change-Id: If6294f231dd03f8d89e7c0bdab2c676e65c06f05
---
.werks/6492 | 30 ++++++++++++++++++++++++++++++
agents/plugins/mk_oracle | 33 +++++++++++++++++++++++++++++++--
2 files changed, 61 insertions(+), 2 deletions(-)
diff --git a/.werks/6492 b/.werks/6492
new file mode 100644
index 0000000..8d5ff2d
--- /dev/null
+++ b/.werks/6492
@@ -0,0 +1,30 @@
+Title: mk_oracle: Add pre- or postfix to TNS alias
+Level: 1
+Component: checks
+Compatible: compat
+Edition: cre
+Version: 1.6.0i1
+Date: 1536577925
+Class: feature
+
+The SIDs are extracted from the process list via "ps -ef".
+Some of the extracted SIDs may have a pre- or postfix in
+tnsnames.ora, eg.
+<br>
+<code>
+PRE_SID.POST =
+ (DESCRIPTION =
+ (ADDRESS = (PROTOCOL = TCP)(Host = HOSTNAME)(Port = PORT))
+ (CONNECT_DATA = (SID = SID)(GLOBAL_NAME = SID.POSTFIX))
+ )
+</code>
+<br>
+
+The pre- or postfix can be configured in mk_oracle.cfg, eg.
+<br>
+<code>
+PREFIX='GLOBAL_PRE_' # for all SIDs
+PREFIX_SID='SPECIFIC_PRE_' # for the specific SID 'SID'
+</code>
+<br>
+The same works for 'POSTFIX'.
diff --git a/agents/plugins/mk_oracle b/agents/plugins/mk_oracle
index c3cf270..c0d0961 100755
--- a/agents/plugins/mk_oracle
+++ b/agents/plugins/mk_oracle
@@ -1787,7 +1787,36 @@ mk_ora_db_connect () {
TNSPINGOK=no
if [ -f "${TNS_ADMIN}/tnsnames.ora" ]; then
- if "${ORACLE_HOME}/bin/tnsping" "${TNSALIAS}" >/dev/null
2>&1; then
+ if [ "${ORADBUSER:0:2}" = '/@' ]; then
+ P_TNSALIAS_P=$(eval echo "${ORADBUSER:2}")
+ else
+ P_TNSALIAS_P=$ORACLE_SID
+ fi
+
+ if [ -n "$P_TNSALIAS_P" ]; then
+ PREFIX_SID="PREFIX_$sid"
+ PREFIX_SID=${!PREFIX_SID}
+ if [ -n "$PREFIX_SID" ]; then
+ P_TNSALIAS_P="$PREFIX_SID$P_TNSALIAS_P"
+ elif [ -n "$PREFIX" ]; then
+ P_TNSALIAS_P="$PREFIX$P_TNSALIAS_P"
+ else
+ P_TNSALIAS_P="$P_TNSALIAS_P"
+ fi
+
+ POSTFIX_SID="POSTFIX_$sid"
+ POSTFIX_SID=${!POSTFIX_SID}
+ if [ -n "$POSTFIX_SID" ]; then
+ P_TNSALIAS_P="$P_TNSALIAS_P$POSTFIX_SID"
+ elif [ -n "$POSTFIX" ]; then
+ P_TNSALIAS_P="$P_TNSALIAS_P$POSTFIX"
+ else
+ P_TNSALIAS_P="$P_TNSALIAS_P"
+ fi
+ fi
+
+ if "${ORACLE_HOME}"/bin/tnsping "${P_TNSALIAS_P}"
>/dev/null 2>&1; then
+ TNSALIAS="$P_TNSALIAS_P"
TNSPINGOK=yes
else
unset TNSALIAS
@@ -1812,7 +1841,7 @@ mk_ora_db_connect () {
TNSALIAS=${TNSALIAS:-"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=${DBHOST:-"localhost"})(PORT=${DBPORT:-1521}))(CONNECT_DATA=(SID=${ORACLE_SID})(SERVER=DEDICATED)(UR=A)))"}
# ORADBUSER = '/'? => ignore DBPASSWORD and use the wallet
- if [ "${ORADBUSER}" = '/' ]; then
+ if [ "${ORADBUSER:0:1}" = '/' ]; then
# connect with / and wallet
ORADBUSER=""
DBPASSWORD=""