Logo Oracle Deutschland   DBA Community  -  März 2011
Hilfe?! Wie funktioniert mein Werkzeug?
von Sebastian Solbach, ORACLE Deutschland B.V. & Co. KG

Es gibt eine ganze Reihe an Oracle Tools für die Oracle Datenbank, die per Command Line Interfaces bedient werden können: Von RMAN über ADRCI, vom SQL*Loader über Export/Import, von SRVCTL über SQL*Plus. Und wie es sich für ordentliche Werkzeug gehört, besitzt auch (fast) jedes einzelne von ihnen eine eigene Hilfestellung. Wobei die Betonung eindeutig auf "eigene" liegt.

Auch der ungeübte Benutzer wird sehr schnell merken, dass Oracle sich hier wohl nie so wirklich Gedanken darüber gemacht hat, die Hilfefunktionen zu vereinheitlichen - außer dass die Hilfe mehr oder weniger hilfreich ist.

Die wohl interessanteste Ausprägung dieser Hilfefunktion ist hier sicherlich der RMAN, dessen umfangreiche Syntaxhilfe nur schwer zu erhalten ist - es sei denn man vertippt sich absichtlich. Solange man alles richtig macht (oder eben falsch, aber leider mit der richtigen Syntax) ist RMAN kein Hinweis über seine umfangreichen Syntaxchecker zu "entlocken".

Wie man bei den vielen unterschiedlichen Oracle Tools die hilfreichen Informationen bekommt, damit beschäftigt sich unser Tipp.

Ein paar generelle Hinweise

Die zahlreichen Oracle Werkzeuge lassen sich durch die Art Ihres Aufrufes in Kategorien unterteilen. Daraus ergibt sich schon ein Hinweis, wie man zur Hilfe gelangt.
  • Rufen die Tools eigene Command Line Interpreten auf, so ist die Wahrscheinlichkeit groß, dass diese, sobald man sich im CLI befindet, ein "HELP" akzeptieren. Klassiche Vertreter dieser Kategorie sind das Interface vom Data Guard Broker (DGMGRL) und der Zugriff auf das Automatic Diagnostic Repository (ADRCI).
  • Bei Kommandos die direkt von der Betriebssystem Ebene, wie einer Shell, aufgerufen werden, ist es hingegen wahrscheinlicher dass ein "-h" oder "-help" zu einer erklärenden Anzeige führt. Die Betriebssystemnahen Tools der Clusterware, wie das SRVCTL oder CRSCTL fallen in diese Kategorie
  • Zusätzlich dazu gibt es noch Werkzeuge, die beide Varianten unterstützen: Einerseits geben diese Informationen zur Command Line mit "-h" aus und sobald man im Interpreter selber ist, zusätzlich über ein "help" verfügen.
  • Und als allerletzte Regel gibt es natürlich noch die Tools, die erst bereit sind Ihr Wissen freizugeben, wenn man sich vertippt...
Aber wie heißt es so schön: Keine Regel ohne Ausnahme: Die generellen Informationen sind zwar schon ein guter Anhaltspunkt, aber wie wir gleich sehen werden, bekommt man manche wirklich interessanten Informationen erst, wenn man sich die Hilfe anzeigen lässt und sich dann auch noch vertippt...

Wie in jeder großen Toolssammlung gibt es noch die "Schweigsamen", bei denen nur der Blick ins Handbuch darüber aufklärt, wie sie behandelt werden wollen.

Einige Tools: Eine kurze Vorstellung

Die aufgelisteten Werkzeuge sind nur ein Auszug und beinhalten nur diejenigen, die nicht über eine graphische Oberfläche verfügen und per Commandline aufzurufen sind. Auf Grund der Übersicht schreibe ich dabei den eigentlichen Aufruf groß. Sollten Sie das Werkzeug später aufrufen wollen, so werden die Befehle im Normalfall klein geschrieben.

ACFSUTIL Das (A)SM (C)luster (F)ile(s)ystem existiert seit Oracle 11gR2 als "General Purpose Filesystem" und wird mit dem ACFSUTIL Programm verwaltet. Hiermit werden die Features des ACFS aktiviert und verwaltet, wie Security, Verschlüsselung, Snapshots und Replikation.

ADRCI Der (A)utomatic (D)iagnostic (R)epository (C)ommand (I)nterpreter hilft bei der Analyse der Oracle Log- und Tracefiles, listet diese auf, zeigt diese an und fasst alle notwendigen Informationen eines Problems für einen Servicerequest zusammen.

AGTCTL Das (Ag)en(t) (C)on(t)ro(l) steuert den Agent für externe Prozedurenaufrufe. Damit dessen Hilfe überhaupt angezeigt wird, muss die Umgebungsvariable TNS_ADMIN oder AGTCTL_ADMIN gesetzt worden sein.

ASMCMD Das (A)utomatic (S)torage (M)anagement (C)o(m)man(d) ist das Management Tool für das ASM. Seit 11gR2 muss der Storage Administrator kein SQL*Plus mehr verwenden um Diskgruppen anzulegen und zu verwalten und I/O Statistiken und andere Informationen rund um ASM und dessen verwendeten Platten anzeigen zu lassen. So erlaubt es auch das Anlegen und Verwalten von Volumes für Filesysteme und ändert sogar Parameter der ASM Instanz.

CHOPT Das (Ch)ange (Opt)ions Werkzeug wurde mit 11g eingeführt und dient dazu nachträglich Funktionalitäten im Oracle Executable zu aktivieren, wie Partitioning, Real Application Testing, Database Vault etc.

CRSCTL Das (C)luster (R)eady (S)ervice (C)on(t)ro(l) steuert die Oracle Clusterware: Dazu gehört das Stoppen und Starten des Clusters und von Cluster Ressourcen, genauso wie die Informationssammlung über den aktuellen Cluster Status.

CLUVFY Das Cluster Verification Utility prüft die notwendigen Voraussetzungen für Oracle Datenbank Installationen ab. Früher nur für Real Application Clusters nutzbar, ist es seit 11gR2 in den Oracle Universal Installer integriert. Es gibt aber immer noch Fälle in denen ein separater Aufruf hilfreich sein kann.

Datapump EXPDP und IMPDP sind seit Oracle 10g die präferierten Werkzeuge um Daten in und aus der Oracle Datenbank zu bekommen.

NID Diese kleine Utility hilft den Datenbank (N)amen und die (ID) einer Datenbank zu ändern.

DBV Das (D)aten(b)ank (V)erifizierungswerkzeug überprüft die einzelnen Datenfiles der Datenbank auf Blockkorruptionen. Da der Recovery Manager bei einem Backup ebenfalls eine Überprüfung durchführt, wird auch dieses Programm seltener benötigt

DGMGRL Das (D)ata (G)uard (M)ana(g)e(r) Command (L)ine Interface verwaltet Standby Datenbanken, wenn der Data Guard Broker aktiviert wurde. Dazu gehört die Parametrisierung der Standby, ein Switchover oder Failover, wie auch das Zugreifen auf viele andere Funktionalitäten einer Standby Datenbank.

EMCA Der (E)nterprise (M)anager (C)onfiguration (A)ssistant konfiguriert die graphische Oberfläche für die Oracle Datenbank, die DBConsole oder konfiguriert den Agenten zur Kommunikationen mit dem Enterprise Manager Cloud Control

EMCTL (E)nterprise (M)anager (C)on(t)ro(l) stoppt und startet Agent und DBConsole des Enterprise Managers.

Export/Import Zwar wird der "alte" Export (exp) nicht mehr unterstützt, den (imp) Befehl hingegen wird es noch sehr lange geben, damit die Kunden immer die Möglichkeit haben die ehemaligen Export Files in aktuelle Datenbanken zu laden.

LSNRCTL Das (L)i(s)te(n)e(r) (C)on(t)ro(l) ist für die Administration des Oracle Listener zuständig.

OCRCONFIG Die (O)racle (C)luster (R)egistry ist das Herz jedes Real Applikation Clusters. Die OCR wird mit Hilfe des OCRCONFIG Tools verwaltet.

OERR Mit (O)racle (Err)or lassen sich Informationen zu Oracle Fehlermeldung anzeigen und erspart den Blick in die Dokumentation.

OLSNODES Mit (O)racle (L)i(s)t (Nodes) werden die Knoten eines Clusters und erweiterte Informationen zu den Clusterknoten angezeigt, wie z.B. welche Knotennummer diese haben und ob diese gepinned sind.

ORAPWD (Ora)cle (P)ass(w)or(d) Utility erzeugt das Passwort File und setzt das Passwort des Benutzers SYS.

ORION Das (Or)acle (I)/(O) Tool tested Storage Systeme auf Ihre Leistungsfähigkeit bezgl. I/O und Durchsatz. Mehr Informationen hierzu erhalten Sie in folgende DBA Community Tipp.

OPATCH Im Gegensatz zu den anderen Werkzeugen, befindet sich (O)racle (Patch) nicht unter $ORACLE_HOME/bin, sondern unter $ORACLE_HOME/OPatch Verzeichnis. Mit OPATCH wird der komplette Patch Vorgang für Critical Patch Updates, One Off Patches und anderer Patche automatisiert. Auch hierzu gab es einen DBA Community Tipp

RMAN Der (R)ecovery (Man)ager ist sicherlich eines der umfangreicheren Tools und beinhaltet alle Funktionalität um ein Backup und Recovery der Oracle Datenbank durchzuführen. Seit Oracle 11g enthält er sogar einen Advisor, der Hilfe darüber gibt, welche Recovery Strategie am Besten für den eingetretenen Fehlerfall geeignet ist. Leider ist die Hilfsfunktion gut versteckt.

SQLLDR Daten aus einem Flatfile (Textfile, CSV Datei, usw.) in eine Oracle Datenbank zu Laden ist die Stärke des (SQL)*(L)oa(d)e(r)s. Dieser kommt aber auch bei der Einbindung externer Tabellen zum Tragen.

SQLPLUSDas Standardwerkzeug der Oracle Datenbank.

SRVCTL Das (S)e(r)(v)er (C)on(t)ro(l) dient zur Verwaltung von Oracle Ressourcen (Datenbank, Listener) in Umgebungen auf denen die Grid Infrastruktur installiert ist.

TNSPING Wie ein normaler "PING" befehl dazu dient zu prüfen, ob ein Rechner reagiert, dient TNSPING dazu den Listener zu befragen, ob er die angefragte Datenbank kennt. Dies ist kein vollständiger Verbindungstest, reicht aber aus, um initiale Fehler der tnsnames.ora zu erkennen.

TKPROF TKPROF dient dazu Trace Files der Datenbank bzw. des Clients zu analysieren und in ein lesbares Format zu übersetzten. Es hilft häfig dabei Performance Tuning zu betreiben.

WRC Das (W)orkload (R)eplay (C)lient Programm erzeugt Prozesse, die das aufgezeichnete Lastprofil einer Real Application Testing Aufzeichnung ausführt.

Eine Tabelle

Nachdem wir nun die unterschiedlichen Arten von Hilfeaufrufen und Werkzeugen kennengelernt haben, schauen wir doch mal wie die einzelnen Werkzeuge auf unsere Hilfeanfrage reagieren:
Tool-help-h--helphelp BefehlHilfe bei Vertippen
ACFSUTILGibt bei fehlerhafter Eingabe eine allgemeine Hilfe aus
ADRCIXX
AGTCTLX
ASMCMDXX
CHOPTGibt bei fehlerhafter Eingabe eine allgemeine Hilfe aus
CLUVFYXX
CRSCTLXXXX
DBVERIFYX
DGMGRLX
EMCAXXX
EMCTLXXX
EXP/IMPX
EXPDP/IMPDPXX
LSNRCTLX
NIDX
OCRCONFIGXX
OERRGibt bei fehlerhafter Eingabe eine allgemeine Hilfe aus
OLSNODESXXX
ORAPWDGibt bei fehlerhafter Eingabe eine allgemeine Hilfe aus
ORIONX
OPATCHXX
RMANX
SQLLDRsqlldr ohne Parameter für Hilfe
SQLPLUSXXX
SRVCTLXX
TNSPINGtnsping ohne Parameter für Hilfe
TKPROFtkprof ohne Parameter für Hilfe
WRCXX

"Help Befehl" bedeutet, dass es im Interaktiven Modus (Aufruf ohne Parameter) eine erweiterte Hilfe gibt mit dem Befehl "Help".
"Hilfe bei Vertippen" ist nur dann gegeben, wenn eine Hilfe bei einem Eingabefehler in Kontext des eingegebenen Befehls gegeben wird. Eine generelle Hilfeanzeige ist dabei nicht gemeint.

Das Ergebnis könnte unterschiedlicher kaum sein. Hatte ich Anfangs noch die Hoffnung, dass -help ein Allheilmittel wäre, hat mich hier spätestens "SRVCTL" ernüchtert.

Nicht vergessen sollte man noch, dass bei manchen Tools, wie z.B. SQLPlus man zwar eine Hilfe bekommt, diese sich aber nur auf den Aufruf des Tools, nicht aber auf die SQL Syntax bezieht.

Ein paar Beispiele

Zuletzt schauen wir uns noch ein paar Beispiele an, wie die Hilfe in unterschiedlichen Werkzeugen verwendet wird:

Beispiel 1: CRSCTL
$ crsctl stat res -t -help
Usage:
  crsctl status resource [[...]|-w ] [<-p|-v> [-e]] | [[-f|-l|-g]] | [[-k |-n ] [-d ]] | [-s -k  [-d ]]
     Check status of designated resources

  crsctl status resource [[...]|-w ] -t
     Print status of resources in tabular format
where
     resName [...]     One or more blank-separated resource names
     -w                Resource filter (e.g., "TYPE = ora.db")
     -p                Print static configuration
     -v                Print runtime configuration
     -e                Evaluate a resource instance's special values
     -f                Print full configuration
     -l                Print all cardinal and degree members
     -g                Check if resources are registered
     -k                Cardinality ID
     -d                Degree ID
     -n                Server name
     -s                Get target servers for relocation
     -t                Tabular display
Glaubt man nun alles über diesen crsctl stat res -t Befehl zu wissen, sollte man sich nun mal vertippen:
crsctl stat res -t -w vertippt
CRS-2594: Filter specification 'vertippt' is invalid

Sample filters:
1. TYPE = type1
2. ((TYPE = type1) AND (CHECK_INTERVAL > 50))
3. (TYPE = type1) AND ((CHECK_INTERVAL > 30) OR (AUTO_START co never))

Filter Operators: =, >, <, !=, co, st, en

Sample command: crsctl status res -w "TYPE = type1"
CRS-4000: Command Status failed, or completed with errors.
Urplötzlich erhält man eine Information, wie man mit Hilfe von -w die Statusabfrage einschränken kann. Dies war vorher aus der Hilfe für den crsctl stat res Befehl nicht zu erkennen. Deswegen sollte man durchaus mal mehrere Optionen durchprobieren.

Beispiel 2: DGMGRL
$ dgmgrl help
Unknown option: help
Usage: dgmgrl [] [ []]
   ::= -silent | -echo
     ::= /[@]
   ::= 
Die Hilfe von DGMGRL beschränkt sich in diesem Falle auf den Aufruf von DGMGRL. Ganz anders, wenn man DGMGRL erst einmal gestartet hat und man sich im Command Line Interpreter befindet:
DGMGRL> help

The following commands are available:

add            Adds a standby database to the broker configuration
connect        Connects to an Oracle database instance
convert        Converts a database from one type to another
create         Creates a broker configuration
disable        Disables a configuration, a database, or fast-start failover
edit           Edits a configuration, database, or instance
enable         Enables a configuration, a database, or fast-start failover
exit           Exits the program
failover       Changes a standby database to be the primary database
help           Displays description and syntax for a command
quit           Exits the program
reinstate      Changes a database marked for reinstatement into a viable standby
rem            Comment to be ignored by DGMGRL
remove         Removes a configuration, database, or instance
show           Displays information about a configuration, database, or instance
shutdown       Shuts down a currently running Oracle database instance
sql            Executes a SQL statement
start          Starts the fast-start failover observer
startup        Starts an Oracle database instance
stop           Stops the fast-start failover observer
switchover     Switches roles between a primary and standby database

Use "help " to see syntax for individual commands
Das sieht doch schon ganz anders aus... und ist viel informativer. Daraus lernen wir, dass man durchaus darauf achten sollte, zu welchem Zeitpunkt man nach Hilfe fragt.

Beispiel 3: RMAN
RMAN> help

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01009: syntax error: found "identifier": expecting one of: "advise, allocate, alter, backup, @, catalog,
            change, configure, connect, convert, copy, create, crosscheck, delete, drop, duplicate, exit,
            flashback, grant, host, import, list, mount, open, print, quit, recover, register, release, repair,
            replace, report, reset, restore, resync, revoke, run, send, set, show, shutdown, spool, sql, startup,
            switch, transport, unregister, upgrade, validate, {, "
RMAN-01008: the bad identifier was: help
RMAN-01007: at line 1 column 1 file: standard input

RMAN> delete help

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01009: syntax error: found "identifier": expecting one of: "archivelog, backuppiece, backupset, backup, 
            controlfilecopy, copy, datafilecopy, expired, force, foreign, global, noprompt, obsolete, proxy, script
RMAN-01008: the bad identifier was: help
RMAN-01007: at line 1 column 8 file: standard input

RMAN> delete archivelog irgendwas

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01009: syntax error: found "identifier": expecting one of: "all, from, high, like, low, scn, sequence, time,
            until, double-quoted-string, integer, single-quoted-string"
RMAN-01008: the bad identifier was: irgendwas
RMAN-01007: at line 1 column 19 file: standard input
RMAN sind die Informationen nur häppchenweise zu entlocken. Dies ist zwar mühselig, aber Stück für Stück kommt man dem Ergebnis näher, frei nach dem Motto "Steter Tropfen hölt den Stein".

Es gibt bestimmt noch viele andere Beispiele. Ich möchte aber Ihren eigenen Erfahrungen nicht vorgreifen. Mit einer gewissen Neugierde und Probierfreudigkeit gelant man in der Regel ans Ziel. Sollten Sie doch nicht zum Ziel kommen, hilft immer noch der Blick ins Handbuch:

Nützliche Links und Referenzen

  • Oracle Database Utilities 11g Release 2 (11.2)
  • Oracle Clusterware Administration and Deployment Guide 11g Release 2 (11.2)
  • Oracle Data Guard Broker 11g Release 2 (11.2)
  • Zurück zur Community-Seite