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.
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.
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:
"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 [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 [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 "helpDas 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 inputRMAN 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
|