+ All Categories
Home > Documents > Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD::...

Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD::...

Date post: 06-Feb-2018
Category:
Upload: dolien
View: 223 times
Download: 0 times
Share this document with a friend
41
07.09.08 www.consol.de Überwachung von Oracle-Datenbanken mit check_oracle_health Gerhard Laußer ConSol* Software GmbH, München
Transcript
Page 1: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Überwachung von Oracle-Datenbankenmit

check_oracle_health

G erhard LaußerConSol* Software GmbH, München

Page 2: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Wer bin ich?

Gerhard Laußeraus München

arbeite bei der Firma ConSol*

„lausser“ im Nagios-Portal

Page 3: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Oracle?? Hää????

Databaseprocess

Databaseprocess

Databaseprocess

Databaseprocess

Databaseprocess

Databaseprocess

Instance

Database

SGA

Architekturübersicht

Page 4: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Oracle?? Hääääää???

DBF RDO RDO RDO

DataBufferCache Redo

Buffer

Client

Library Cache

Dictionary Cache

Shared Pool

SGA

Page 5: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Entstehungsgeschichte

Kundenanforderung mit etlichen Punkten.Es gab ein paar Oracle-Plugins.Die deckten nur wenige der Anforderungen ab.Die unterschieden sich stark bei den Aufrufparametern.

Da sowieso viel zu entwickeln war, musste etwas neues her

Ein Plugin, das alle Anforderungen abdecktmit konsistenten Kommandozeilenparameternmit Performancedatenmit leicht erweiterbarer Struktur

Page 6: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Wo bekomme ich es her?

http://www.consol.de/opensource/nagios/check-oracle-health

Page 7: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Auspacken und Zusammenbauen

tar zxvf check_oracle_health-1.4.0.1.tar.gzunzip check_oracle_health-1.4.0.1.zipsh check_oracle_health-1.4.0.1.shar

cd check_oracle_health-1.4.0.1./configure –help ..... --libexecdir=DIR program executables [PREFIX/libexec] ...... --with-nagios-user=USER set user name to run nagios --with-nagios-group=GROUP set group name to run nagios --with-statefiles-dir=PATH sets directory for the state files (default=/var/tmp/check_oracle_health) --with-perl=PATH sets path to perl executable (default= perl im $PATH) ......

Ein funktionierendes DBD::Oracle oder zumindest eine funktionierende Oracle-Client-Installation muss natürlich auch vorhanden sein.

Page 8: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

So sieht's aus

Der einfachste Fall: ist die Datenbank/Listener erreichbar?

$ check_oracle_health --connect=ora10 --mode=tnspingOK - connection established to ora10.

Der zweiteinfachste Fall: kann man sich einloggen und wie lange dauert das?

$ check_oracle_health --connect=nagios/oramon@ora10 --mode=connection-timeOK - 0.10 seconds to connect as NAGIOS | connection_time=0.1046;1;5

Page 9: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Der Connectstring mit Username und Passwort

ausführlich:

check_oracle_health –-connect=<sid> --username=<user> --password=<pass> ...

oder zusammengesetzt:

check_oracle_health –-connect=<username>/<passwort>@<sid> ...

oder mit custom variables in der Servicedefinition:

export NAGIOS__SERVICEORACLE_SID=<sid> # _oracle_sidexport NAGIOS__SERVICEORACLE_USER=<user> # _oracle_userexport NAGIOS__SERVICEORACLE_PASS=<pass> # _oracle_passcheck_oracle_health ...

Page 10: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Der Connectstring bei „external authentification“

Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP):

CREATE USER OPS$SEPP IDENTIFIED EXTERNALLY;sepp$ export ORACLE_SID=ora10sepp$ sqlplus /SQL>

sepp$ check_oracle_health –-connect=<sid> ...OK - 0.14 seconds to connect as OPS$SEPP | connection_time=0.1422;1;5

Page 11: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Benötigte Privilegien

create user nagios identified by 'dingsbums';grant create session to nagios;

grant select any dictionary to nagios; grant select on V_$SYSSTAT to nagios; grant select on V_$INSTANCE to nagios; grant select on V_$LOG to nagios; grant select on SYS.DBA_DATA_FILES to nagios; grant select on SYS.DBA_FREE_SPACE to nagios;

Page 12: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Komponenten des Plugins

Das endgültige Plugin wird aus lauter einzelnen Perl-Modulen zusammengebaut:

Nagios/DBD/Oracle/Server.pmNagios/DBD/Oracle/Server/Database.pmNagios/DBD/Oracle/Server/Database/Tablespace.pmNagios/DBD/Oracle/Server/Database/Tablespace/Datafile.pmNagios/DBD/Oracle/Server/Database/Tablespace/Segment.pmNagios/DBD/Oracle/Server/Instance.pmNagios/DBD/Oracle/Server/Instance/SGA.pmNagios/DBD/Oracle/Server/Instance/SGA/DataBuffer.pmNagios/DBD/Oracle/Server/Instance/SGA/SharedPool.pmNagios/DBD/Oracle/Server/Instance/SGA/SharedPool/DictionaryCache.pmNagios/DBD/Oracle/Server/Instance/SGA/SharedPool/LibraryCache.pmNagios/DBD/Oracle/Server/Instance/SGA/RollbackSegments.pmNagios/DBD/Oracle/Server/Instance/SGA/Latch.pmNagios/DBD/Oracle/Server/Instance/SGA/RedoLogBuffer.pmNagios/DBD/Oracle/Server/Instance/PGA.pmNagios/DBD/Oracle/Server/Instance/Enqueue.pmNagios/DBD/Oracle/Server/Instance/Event.pmNagios/DBD/Oracle/Server/Instance/Sysstat.pmNagios/DBD/Oracle/Server/Instance/Waitevent.pm

Page 13: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Warum so viele Perl-Module?

Neue Funktionalität soll schnell implementiert werden können.

Man muss sich nicht durch seitenweise Code wühlen.

Eventuell vorhandene (firmenspezifische) Scripts können möglicherweise in einem eigenem Modul untergebracht werden.

Page 14: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Nochmal ein Beispiel, bevor's losgeht

Wieviele User sind angemeldet?Es kann vorkommen, daß Firewalls die Verbindung zum User hin abbrechen, aber die Datenbank davon nichts mitbekommt.

$ check_oracle_health --mode=connected-usersOK - 38 connected users | connected_users=38;50;100

Page 15: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Der Parameter --mode

Was genau das Plugin messen/bewerten soll, gibt man mit dem Kommandozeilenparameter --mode an:

--mode=tnsping

--mode=connected-users

--mode=sga-data-buffer-hit-ratio

--mode=stale-statistics

--mode=tablespace-usage

.....

Sinnvolle Vorschläge sind ausdrücklich erwünscht!

Page 16: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Kategorien von Checks

Die Modes lassen sich grob einteilen:

Verbindung/Sessions

Performance/Cachehitraten/SGA

Integrität

Tablespaces/Datafiles

IO

Latches/Enqueues

Events/Stats

SQL

Page 17: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

DB-Verbindung / Sessions

$ check_oracle_health --connect=ora10 --mode=tnspingOK - connection established to ora10.

$ check_oracle_health --connect=nagios/oradbmon@ora10 --mode=connection-timeOK - 0.10 seconds to connect as SYSTEM | connection_time=0.0954;1;5

$ check_oracle_health --connect=nagios/oradbmon@ora10 --mode=connected-usersOK - 21 connected users | connected_users=21;50;100

Page 18: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Performence / SGA

# das kennt jeder DBA: Data Buffer Cache (Datenblöcke im RAM?)$ check_oracle_health --mode=sga-data-buffer-hit-ratioOK - SGA data buffer hit ratio 100.00% | sga_data_buffer_hit_ratio=100.00%;98:;95:

# Bereits geparste SQL Statements$ check_oracle_health --mode=sga-library-cache-hit-ratioCRITICAL - SGA library cache hit ratio 86.73% | sga_library_cache_hit_ratio=86.73%;98:;95:

# Bereits verwendete Datenbankobjekte, Tabellen, Spaltennamen$ check_oracle_health --mode=sga-dictionary-cache-hit-ratioOK - SGA dictionary cache hit ratio 98.41% | sga_dictionary_cache_hit_ratio=98.41%;95:;90:

# Schutz von Objekten im Speicher vor konkurrierendem Zugriff$ check_oracle_health --mode=sga-latches-hit-ratioOK - SGA latches hit ratio 99.97% | sga_latches_hit_ratio=99.97%;98:;95:

Page 19: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Performance

# Der Shared Pool umfasst den Library Cache, Dictionary Cache,...check_oracle_health --mode=sga-shared-pool-freeOK - SGA shared pool free 21.48% | sga_shared_pool_free=21.48%;10:;5:

# Objekt wurde gesucht, war nicht vollst. im Lib.Cache und musste neu geladen werden. check_oracle_health --mode=sga-shared-pool-reloadsOK - SGA shared pool reloads 0.67% | sga_shared_pool_reloads=0.67%;1;10

# Werden die Sort-Operationen im RAM ausgeführt?check_oracle_health --mode=pga-in-memory-sort-ratioOK - PGA in-memory sort ratio 100.00% | pga_in_memory_sort_ratio=100.00;99:;90:

# Sind SQL-Statements ohne Reload wiederverwendbar (mehr ? Variable verwenden)check_oracle_health --mode=soft-parse-ratioWARNING - Soft parse ratio 97.53% | soft_parse_ratio=97.53%;98:;90:

Page 20: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Integrität

z.b. Trigger oder PL/SQL referenziert eine Tabelle, die gelöscht wurde

$ check_oracle_health --mode=invalid-objectsCRITICAL - 25 invalid objects | invalid_ind_partitions=0 invalid_indexes=0 invalid_objects=25

Aktuelle Statistiken helfen dem Optimizer.

$ check_oracle_health --mode=stale-statisticsWARNING - 19 objects with stale statistics | stale_stats_objects=19;10;100

Page 21: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Tablespaces

Mit –mode=list-tablespaces kann man sich einen Überblick verschaffen

$ check_oracle_health --mode=list-tablespacesSYSAUXSYSTEMTEMPUNDOTBS1USERSXD73S_DAT_TABOK - have fun

Page 22: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Tablespaces

$ check_oracle_health --mode=tablespace-usageOK - tbs XD73S_DAT_TAB usage is 59.51%, tbs USERS usage is 76.82%, tbs UNDOTBS1 usage is 0.00%, tbs TEMP usage is 0.00%, tbs SYSTEM usage is 2.48%, tbs SYSAUX usage is 1.58% | 'tbs_xd73s_dat_tab_usage_pct'=59%;90;98 'tbs_xd73s_dat_tab_usage'=2975MB;4500;4900;0;5000 'tbs_xd73s_dat_tab_alloc'=3000MB;;;0;5000 'tbs_users_usage_pct'=76%;90;98 'tbs_users_usage'=25172MB;29491;32112;0;32767 'tbs_users_alloc'=29547MB;;;0;32767 'tbs_undotbs1_usage_pct'=0%;90;98 'tbs_undotbs1_usage'=0MB;29491;32112;0;32767 'tbs_undotbs1_alloc'=1135MB;;;0;32767 'tbs_temp_usage_pct'=0%;90;98 'tbs_temp_usage'=0MB;29491;32112;0;32767 'tbs_temp_alloc'=588MB;;;0;32767 'tbs_system_usage_pct'=2%;90;98 'tbs_system_usage'=811MB;29491;32112;0;32767 'tbs_system_alloc'=820MB;;;0;32767 'tbs_sysaux_usage_pct'=1%;90;98 'tbs_sysaux_usage'=516MB;29491;32112;0;32767 'tbs_sysaux_alloc'=540MB;;;0;32767

Das ist unübersichtlich und kann sehr leicht länger als 1024 Bytes werden (Schnipp!)

Anm. Mit dem Parameter -3 wird bei > 200 Zeichen das Nagios 3.x Format verwendet.Wenns unbedingt in einen einzigen Service reinsoll, dann check_multi verwenden.

Page 23: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Tablespaces

Mit dem Parameter –name kann man einzelne Objekte herauspicken

$ check_oracle_health --mode=tablespace-usage --name=USERS OK - tbs USERS usage is 76.82% | 'tbs_users_usage_pct'=76%;90;98 'tbs_users_usage'=25172MB;29491;32112;0;32767 'tbs_users_alloc'=29547MB;;;0;32767

$ check_oracle_health --mode=tablespace-usage --name=XD73S_DAT_TAB --warning=50WARNING - tbs XD73S_DAT_TAB usage is 59.51% | 'tbs_xd73s_dat_tab_usage_pct'=59%;50;98 'tbs_xd73s_dat_tab_usage'=2975MB;2500;4900;0;5000 'tbs_xd73s_dat_tab_alloc'=3000MB;;;0;5000

Page 24: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Tablespaces

# Free Space Fragmentation Index. (Nur noch für DICTIONARY managed Tablespaces relevant)# 100=ideal

check_oracle_health -–mode=tablespace-fragmentation --tablespace=ARSYSTEMOK - tbs ARSYSTEM fsfi 70.91 | 'tbs_arsystem_fsfi'=70.91;30:;20:;0;100

Page 25: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Tablespaces

# Ist physical IO gleichmäßig über die Datafiles verteilt?

check_oracle_health –-mode=tablespace-io-balance –tablespace=PERFSTATCRITICAL - PERFSTAT datafiles PERFSTAT3.dbf,PERFSTAT2.dbf io unbalanced (106.872241) | tbs_PERFSTAT_io_cv'=12.94%;50.00;100.00

cv = relative Standardabweichung zum. Je mehr sich die IOs der einzelnen Datafiles vom Mittelwert entfernen, desto größer wird cv. Ausschlaggebend für den Exitcode ist nicht Gesamt-cv, sondern die Abweichung des Datafiles, welches am meisten aus der Reihe tanzt, genauer gesagt das prozentuale Verhältnis der Abweichung vom Mittelwert im Verhältnis zur Standardabweichung. (im Bsp. 106% Abw. vom cv)Es werden nur die Ausreisser unter den Datafiles angezeigt.

Für Alarmierung eher ungeeignet, besser nur zur Langzeitbeobachtung verwenden.

Page 26: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Tablespaces

# Wie lange noch, bis der Tablespace voll ist?

check_oracle_health –-mode=tablespace-remaining-time --tablespace=SYSLOGCRITICAL - tablespace SYSLOG will be full in 28 days'tbs_syslog_days_until_full'=28;90:;30:

Hier kommt noch der Parameter –lookback=<Anzahl von Tagen> zum Tragen. Welcher Zeitraum wird zur Berechnung herangezogen? (default: 30)

# Dictionary managed Tablespaces $ check_oracle_health –mode=tablespace-can-allocate-next --name=XD73S_DAT_TABOK - tablespace XD73S_DAT_TAB free extents are large enough

Seit längerem sind locally managed Tablespaces der Standard, die sowas automatisch regeln.

Page 27: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Datafiles

$ check_oracle_health --mode=list-datafiles XD73S_DAT_TAB.dbfsysaux01.dbfsystem01.dbftemp01.dbfundotbs01.dbfusers01.dbfOK - have fun

Page 28: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Datafiles

$ check_oracle_health --mode=datafile-io-traffic OK - users01.dbf: 0.01 IO Operations per Second, undotbs01.dbf: 0.00 IO Operations per Second, temp01.dbf: 0.00 IO Operations per Second, system01.dbf: 0.00 IO Operations per Second, sysaux01.dbf: 0.00 IO Operations per Second, XD73S_DAT_TAB.dbf: 0.00 IO Operations per Second | 'dbf_users01.dbf_io_total_per_sec'=0.01;1000;5000 'dbf_undotbs01.dbf_io_total_per_sec'=0.00;1000;5000 'dbf_temp01.dbf_io_total_per_sec'=0.00;1000;5000 'dbf_system01.dbf_io_total_per_sec'=0.00;1000;5000 'dbf_sysaux01.dbf_io_total_per_sec'=0.00;1000;5000 'dbf_XD73S_DAT_TAB.dbf_io_total_per_sec'=0.00;1000;500

$ check_oracle_health --mode=datafile-io-traffic --name=users01.dbfOK - users01.dbf: 119.26 IO Operations per Second |'dbf_users01.dbf_io_total_per_sec'=119.26;1000;5000

Damit lassen sich schöne Graphen malen.

Page 29: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Rollback Segmente

Segmente im UNDO-Tablespace. Werden benutzt, um Änderungen von Daten wieder rückgängig zu machen.

check_oracle_health --mode=roll-hit-ratioOK - Rollback segment hit ratio is 100.00% | rollback_segment_hit_ratio=100.00%;99:;98:# 100 – waits/gets; Wenn < 99% , dann braucht man mehr Rollbacksegmente

check_oracle_health --mode=roll-header-contentionCRITICAL - Rollback segment header contention is 49.62% | rollback_segment_header_contention=49.62%;1;2# mehr Segmente! (außer man verwendet UNDO Tablespaces)

check_oracle_health --mode=roll-block-contentionCRITICAL - Rollback segment block contention is 23.42% | rollback_segment_block_contention=23.42%;1;2# größere Segmente!

Page 30: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Rollback Segmente

check_oracle_health –mode=roll-wrapsOK - Rollback segment wraps 0.00/sec | rollback_segment_wraps=23;1;100 rollback_segment_wraps_rate=0.00;1;100# größere Segmente verwenden

check_oracle_health --mode=roll-extendsOK - Rollback segment extends 0.00/sec | rollback_segment_extends=10;1;100 rollback_segment_extends_rate=0.00;1;100

Am besten jemanden fragen, der sich damit auskennt...

Page 31: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Redo Logs

$ check_oracle_health --mode=redo-switch-interval OK - Last redo log file switch interval was 1781 minutes | redo_log_file_switch_interval=106882s;600:;60:

$ check_oracle_health --mode=redo-retry-ratioOK - Redo log retry ratio is 0.000229% | redo_log_retry_ratio=0.000229%;1;10# LGWR retries : entries; >1% = Redo Log Buffer vergrößern

$ check_oracle_health --mode=redo-io-trafficOK - Redo log io is 0.000002 MB/sec | redo_log_io_per_sec=0.000002;100;200

Page 32: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Top 10 aus v$segstat

Gibt es Userprozesse unter den Top10 auf Segment-Ebene?

$ check_oracle_health --mode=seg-top10-logical-readsWARNING - 5 user processes among the top10 logical reads | users_among_top10_logical_reads=5;1;9

$ check_oracle_health --mode=seg-top10-physical-readsWARNING - 7 user processes among the top10 physical reads | users_among_top10_physical_reads=7;1;9

$ check_oracle_health --mode=seg-top10-buffer-busy-waitsOK - 1 user processes among the top10 buffer busy waits | users_among_top10_buffer_busy_waits=1;1;9

$ check_oracle_health --mode=seg-top10-row-lock-waitsOK - 1 user processes among the top10 row lock waits | users_among_top10_row_lock_waits=1;1;9

Page 33: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Statistiken

In der View v$sysstats sammelt Oracle unzählige Meßwerte

$ check_oracle_health --mode=list-sysstats 286 CCursor + sql area evicted 12 CPU used by this session 11 CPU used when call started 108 CR blocks created 344 bytes received via SQL*Net from client 66 physical write bytes 139 redo blocks written <- das interessiert mich 189 transaction rollbacks ......

Page 34: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Statistiken

$ check_oracle_health --mode=sysstat --name=139OK - 0.375000 redo blocks written/sec | 'redo blocks written_per_sec'=0.375000;10;100 'redo blocks written'=3

Vorsicht! Die Zahl ist nicht bei allen Oracle-Versionen gleich.Besser man verwendet den Namen

$ check_oracle_health --mode=sysstat --name="redo blocks written"OK - 1.000000 redo blocks written/sec | 'redo blocks written_per_sec'=1.000000;10;100 'redo blocks written'=11

Und wenn der Name viele Ramschzeichen enthält und man sich die Servicedefinition einfach machen will:

echo „redo blocks written“ | check_oracle_health –mode=encoderedo%20blocks%20written

$ check_oracle_health --mode=sysstat --name=redo%20blocks%20writtenOK - 0.468750 redo blocks written/sec | 'redo blocks written_per_sec'=0.468750;10;100 'redo blocks written'=15

Page 35: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Events

Wenn ein SQL-Statement ausgeführt wird, wird es gelegentlich unterbrochen und muss warten. Ein bestimmter „Event“ muss passieren, bevor das Statement weiter ausgeführt werden kann.

$ check_oracle_health –mode=list-background-events2326919048 da_fi_in_wr Data file init write1989349184* sg_mm_sl_fo_co_sh SGA: MMAN sleep for component shrink2161531084 bu_bu_wa buffer busy waits4078387448 co_fi_pa_wr control file parallel write3213517201 co_fi_se_re control file sequential read1729366244 cu_pi_s_wa_on_x cursor: pin S wait on X 506183215 db_fi_sc_re db file scattered read2652584166 db_fi_se_re db file sequential read1307477558 db_fi_si_wr db file single write

$ check_oracle_health –mode=list-eventsnoch viel, viel mehr.....

in der zweiten Spalte steht ein (eindeutig) verkürzter Name, der alternativ zum langen Namen angegeben werden kann.

Page 36: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Events

Beispiel: Wie oft und wie lange wird gewartet, bis ein Datenblock in den Data Buffer geladen wurde.

$ check_oracle_health --mode=event-waiting --name=bu_bu_waOK - buffer busy waits waits 0.001305% of the time | 'buffer busy waits_percent_waited'=0.001305%;0.1;0.5

Die Zeit, die sämtliche Datenbankprozesse mit Warten verbracht haben im Verhältnis zur verstrichenen Zeit seit dem letzten Lauf.

$ check_oracle_health --mode=event-waits --name=bu_bu_waOK - buffer busy waits : 0.005979 waits/sec | 'buffer busy waits_waits_per_sec'=0.005979;10;100

Hardcore-DBAs fragen. Die wissen sicher, auf welche Events man ein Auge haben sollte.(buffer busy waits, db file scattered read, db file sequential read, free buffer waits, latch free, log buffer space, log file sync, enqueue, SQL*Net more data from client, SQL*Net more data to client, write complete wait)

Page 37: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Latches

Latches sind Sperren auf niedriger Ebene, die Speicher und Strukturen vor konkurrierender Veränderung schützen.

$ check_oracle_health --mode=list-latches|more000 event range base latch001 post/wait queue002 hot latch diags003 process allocation004 session allocation005 session switching006 process group creation007 session idle bit008 client/application info009 longop free list parent

DBA fragen, welche Latches er beobachten will oder für sämtliche Latches Kurven malen lassen.

Page 38: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Latches

$ check_oracle_health --mode=latch-contention --name=214OK - SGA latch library cache (#214) contention 0.03% | 'latch_214_contention'=0.03%;1;2 'latch_214_gets'=10555

# wie oft wollten Prozesse und konnten nicht (v$latch misses : gets)# am besten im Zusammenhang mit der absoluten Anzahl von gets sehen.

$ check_oracle_health --mode=latch-waiting --name=214OK - SGA latch library cache (#214) sleeping 0.000105% of the time | 'latch_214_sleep_share'=0.000105%;0.1;1;0;100

# wie lange mussten Prozesse auf ihren exclusiven Zugriff warten

Page 39: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

Enqueues

Enqueues sind ähnlich wie Latches. Die auf ein Latch wartenden Prozesse kommen rein zufällig zum Zug (Timer wakeup, retry, spin), Enqueues sind FIFOs.

$ check_oracle_health --mode=list-enqueuesAFASCF...

Beispiel: TM = Table Lock

$ check_oracle_health --mode=enqueue-contention --name=TMOK - enqueue TM DML Enqueue: 0.00% of the requests must wait |'TM_contention'=0.00%;1;10 'TM_requests'=725 'TM_waits'=0

$ check_oracle_health --mode=enqueue-waiting --name=TMOK - enqueue TM DML Enqueue: waiting 0.0000% of the time |'TM_ms_waited'=0 'TM_pct_waited'=0.000000%;0.0003333;0.003333

Page 40: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

SQL Statements

Mit –mode=sql lassen sich beliebige SQL-Statements ausführen. Wichtig ist, daß sie ein numerisches Ergebnis liefern, welches mit den Schwellwerten verglichen werden kann.

Beispiel: in der Tabelle „lzamqdetektoren“ gibt es ein Feld „datumdb“, welches auf den Zeitpunkt des Inserts des jeweiligen Datensatzes gesetzt wird. max(datumdb) ist somit die Zeit des letzten Inserts. Es soll gewarnt/alarmiert werden, wenn seit über 5/15 Minuten keine neuen Daten mehr eingetragen wurden.

SELECT (sysdate - max(datumdb)) * 24 * 60 from lzamqdetektorenliefert die Minuten seit dem letzten Eintrag.

check_oracle_health –mode=sql --name=select%20nvl%28%28sysdate%20%2D%20max%28datumdb%29%29%20%2A%2024%20%2A%2060%2C%209999%29%20from%20lzamqdetektoren –name2=lzamqlast –warning=5 --critical=15CRITICAL - lzamqlast: 69151.670000 | 'lzamqlast'=69151.670000;5;15

Der Parameter name2 „verschönert“ die Ausgabe. Ohne ihn würde das SQL-Statement erscheinen.

Page 41: Überwachung von Oracle-Datenbanken mit check oracle · PDF fileEin funktionierendes DBD:: ... Es geht auch ohne Passwort mit „external authentification“ (z.b. bei SAP): CREATE

07.09.08 www.consol.de

War's das?

TODO

ClusterzeugsLokale Prozesse

Unterstützung von http://sqlrelay.sourceforge.net/


Recommended