| 

.NET C# Java Javascript Exception

0

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:

CREATE TABLE "SCOTT"."EMP"("EMPNO" NUMBER(4,0), 
 "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), 
 "MGR" NUMBER(4,0), "HIREDATE" DATE, 
 "SAL" NUMBER(7,2), "COMM" NUMBER(7,2), 
 "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" 
 PRIMARY KEY ("EMPNO") USING INDEX PCTFREE 10 
 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
 TABLESPACE "USERS" ENABLE, CONSTRAINT "FK_DEPTNO" 
 FOREIGN KEY ("DEPTNO") REFERENCES "SCOTT"."DEPT" 
 ("DEPTNO") ENABLE ) PCTFREE 10 PCTUSED 40 
 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING 
 TABLESPACE "USERS" FLASHBACK ARCHIVE "ARCHIV1"

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:
Schreibe einen Kommentar:
Themen:
datenbanken
Entweder einloggen... ...oder ohne Wartezeit registrieren
Benutzername
Passwort
Passwort wiederholen
E-Mail