Oracle obtener DDL de objetos

En ocasiones es muy útil obtener la instrucción DDL de un objeto de base de datos determinado.base_datos_objetos

Podemos por ejemplo recrear un usuario de un entorno a otro sin ni siquiera conocer la contraseña.

Las instrucciones DDL las podemos obtener llamando a la función:

Source   
DBMS_METADATA.GET_DDL (
object_type IN VARCHAR2,
name IN VARCHAR2,
schema IN VARCHAR2 DEFAULT NULL,
version IN VARCHAR2 DEFAULT 'COMPATIBLE',
model IN VARCHAR2 DEFAULT 'ORACLE',
transform IN VARCHAR2 DEFAULT 'DDL')
RETURN CLOB;

En este paquete existen otras funciones que permiten obtener información sobre dependencias y permisos.

Si por ejemplo queremos obtener la instrucción DDL del usuario SCOTT, realizamos la llamada

Source   
SQL> SET long 30000
SQL> SELECT dbms_metadata.get_ddl('USER', 'SCOTT') || ';' FROM dual;
CREATE USER "SCOTT" IDENTIFIED BY VALUES 'S:BB7E0CC7897451C23DE3A88156F21D7F8BCA878F42A2320124C79CB6EAFE;1CC0B1F327DFA5BC'
DEFAULT TABLESPACE "USERS"
TEMPORARY TABLESPACE "TEMP";

Esto lo podemos hacer con cualquier tipo de objeto:

Source   
SELECT dbms_metadata.get_ddl('TABLE', 'NOMBRE_TABLA', 'ESQUEMA') FROM dual;
SELECT dbms_metadata.get_ddl('INDEX','NOMBRE_INDICE', 'ESQUEMA') FROM dual;
SELECT dbms_metadata.get_ddl('MATERIALIZED_VIEW', 'NOMBRE_VISTA_MATERIALIZADA','ESQUEMA') FROM dual;
SELECT dbms_metadata.get_ddl('DB_LINK', 'NOMBRE_DB_LINK','ESQUEMA') FROM dual;
...

Simplemente cambiando el «object_type» podemos obtener las instrucciones DDL. Existen multitud de tipos de objetos, os dejo un link a la documentación donde se describen:

http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_metada.htm#i1018906

Deja un comentario