Ich habe mich mit dem Plugin beschäftigt und eine Lösung gesucht, bei der ich einen dedizierten Account für das Monitoring nutzen kann. Dabei sollte das sqlplus.mk so gestaltet werden, dass es in jeder Umgebung identisch ist.
Mit Hilfe eines Oracle-Wallets kann man sowas elegant lösen.
Was braucht man?
– Oracle-Agent für Check_MK
– einen Datenbankserver mit Oracle ab Standard Edition
– ORACLE_SID muß als ‘service_names’ deklariert sein, notfalls extra ergänzen.

Wie wird das konfiguriert?
– User DBSNMP frei schalten

alter user dbsnmp identified by geheim account unlock;

– Wallet erzeugen
als root:

. oraenv
mkstore -wrl /etc/check_mk/oracle_wallet -create

 
– Kennwort im Wallet eintragen

mkstore -wrl /etc/check_mk/oracle_wallet -createCredential "localhost/<oracle_sid>" dbsnmp geheim

– sqlnet.ora erzeugen

vi /etc/check_mk/sqlnet.ora
SQLNET.WALLET_OVERRIDE = TRUE
WALLET_LOCATION =
(SOURCE=
(METHOD = FILE)
(METHOD_DATA = (DIRECTORY=/etc/check_mk/oracle_wallet))
)

– sqlplus.sh editieren

ORACLE_BASE=/u01/app/oracle
if [ ! -d ${ORACLE_BASE} ]
then
echo "ORACLE_BASE="${ORACLE_BASE}" not exiting!"
exit 1
fi
ORATAB=/etc/oratab
ORACLE_HOME=`cat ${ORATAB} | grep "^"${ORACLE_SID}":" | cut -d":" -f2`
SQLPLUS=${ORACLE_HOME}/bin/sqlplus
if [ ! -x ${SQLPLUS} ]
then
echo "sqlplus not found or ORACLE_HOME wrong! "
echo "SQLPLUS="${SQLPLUS}
exit 1
fi
export ORACLE_HOME
export ORACLE_SID
export TNS_ADMIN=/etc/check_mk
${SQLPLUS} -L -s /@localhost/${ORACLE_SID}
- Wallet testen
export TNS_ADMIN=/etc/check_mk
export ORACLE_SID=tux11g
sqlplus /@localhost/tux11g
show user
exit

Fazit:
Nun kann das Kennwort in jeder Datenbank individuell konfiguriert und sqlplus.sh kann so auf jedem Server identisch gehalten werden. Keine Klartextkennwörter mehr notwendig.
Lizenzen
Mittlerweile darf das Wallet in der Standard und Enterprise-Edition genutzt werden.

2 Responses