Wie können Sie feststellen, mit welchen Eigenschaften, das heißt mit welchem DDL-Kommando (Data Definition Language
), eine Tabelle erzeugt worden ist? Welche Indizes, Trigger usw. gehören zu der Tabelle? Die einfache Antwort ist, Skripte zu schreiben, die die entsprechenden Abfragen auf die Data Dictionary Views wie USER_TABLES, USER_INDEXES
usw. ausführen.
Diese Skripte sind unter Umständen sehr aufwändig und komplex und sind gegebenenfalls je nach Datenbank-Release anzupassen. Schon seit Oracle Version 9i ist es möglich, diese Aufgabe durch einfache Aufrufe des Pakets DBMS_METADATA
zu generieren. Die nachfolgenden Anweisungen zeigen die Verwendung. Zuerst muss die Verbindung mit dem entsprechenden Tabellenbesitzer – im Beispiel ist das der User SCOTT
– hergestellt werden, um die Information zur Tabelle EMP
zu generieren. Standardmäßig ist die Ausgabe dieser Abfrage sehr ausführlich und beinhaltet auch die STORAGE
-Informationen der Tabelle. Soll diese Information unterdrückt werden, ist zuvor die Funktion SET_TRANSFORM_PARAM
anzuwenden:
CONNECT scott/tiger set pagesize 0 long 1000 EXECUTE
DBMS_METADATA.SET_TRANSFORM_PARAM(
DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);
SELECT DBMS_METADATA.GET_DDL('TABLE','EMP')
AS ausgabe FROM dual;
Das Ergebnis der Abfrage sieht dann folgendermaßen aus:
Wollen Sie alle Tabellen eines Datenbank-Schemas in einer Abfrage generieren, ziehen Sie die Data Dictionary View USER_TABLES
zur Abfrage hinzu:
SELECT DBMS_METADATA.GET_DDL('TABLE', u.table_name)
FROM USER_TABLES u
Wie sehen die abhängigen Objekte wie Indizes, Synonyme usw. aus? Die Funktion GET_DEPENDENT_DDL
liefert unter Angabe des entsprechenden Objekttyps die zugehörigen DDL-Kommandos. Die folgende Abfrage zeigt die Informationen zum Index der Tabelle EMP:
SELECT DBMS_METADATA.GET_DEPENDENT_DDL(
'INDEX','EMP','SCOTT') FROM dual
Eine vollständige Liste der zulässigen Objekttypen im ersten Argument findet sich im Handbuch Oracle Supplied PL/SQL Packages and Types References
. Die Ausgabe der vorangehenden Abfrage sieht wie folgt aus:
CREATE UNIQUE INDEX "SCOTT"."PK_EMP" ON "SCOTT"."EMP"
("EMPNO") PCTFREE 10 INITRANS 2 MAXTRANS 255
COMPUTE STATISTICS TABLESPACE "USERS"
Intern wird diese Technologie zum Beispiel bei der Nutzung der Oracle Data Pump
oder im Oracle SQL Developer
verwendet. [Ulrike Schwinn/am]
datenbanken
Weitere News:
Registriere dich
Wenn Du deinen Benutzernamen in Besitz nehmen möchtest, solltest Du dich registrieren:
Benutzername
Passwort
Passwort wiederholen
E-Mail
databasepro
databasepro berichtet alle zwei Monate praxisnah über die Themen, die professionelle Datenbank-Architekten, -Administratoren, Consultants, Anwender und IT-Manager, die sich mit der Auswahl von Technologien, Plattformen, Datenbanken und Entwicklungsumgebungen beschäftigen, Tag für Tag brauchen.