Para esto podemos utilizar la funcion GET_DDL del package DBMS_METADATA.
Veamos un ejemplo de como:
Primero vamos a crear una tabla, un indice y una vista:
SQL> create table T1 (campo1 number, campo2 varchar2(200), campo3 date);
Table created
SQL> alter table T1 add primary key (campo1);
Table altered
SQL> create index IX1_T1 on T1 (campo2);
Index created
SQL> create view V1 as
2 select * from T1;
View created
Ahora obtendremos las DDL:
Hacemos primero estos seteos de SQL*Plus para que la salida no se corte por la cantidad de caracteres mostrados.
SQL> set long 1000
SQL> set pagesize 0
Pasamos como parámetros el tipo de objeto, el nombre y el esquema:
SQL> select DBMS_METADATA.GET_DDL('TABLE','T1','USUARIO1') from dual;
CREATE TABLE "USUARIO1"."T1"
( "CAMPO1" NUMBER,
"CAMPO2" VARCHAR2(200),
"CAMPO3" DATE,
PRIMARY KEY ("CAMPO1")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USUARIO1" ENABLE
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USUARIO1_TBS"
SQL> select DBMS_METADATA.GET_DDL('INDEX','IX1_T1','USUARIO1') from dual;
CREATE INDEX "USUARIO1"."IX1_T1" ON "USUARIO1"."T1" ("CAMPO2")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USUARIO1_TBS"
SQL> select DBMS_METADATA.GET_DDL('VIEW','V1','USUARIO1') from dual;
CREATE OR REPLACE FORCE VIEW "USUARIO1"."V1" ("CAMPO1", "CAMPO2", "CAMPO3") AS
select "CAMPO1","CAMPO2","CAMPO3" from T1
Espero haya quedado claro y les resulte útil.
Ref. http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_metada.htm#BGBBIEGA
No hay comentarios:
Publicar un comentario