You are hereExtraer codigo DDL de objetos en Oracle

Extraer codigo DDL de objetos en Oracle


By IgnacioRuiz - Posted on 15 November 2008

En el articulo presente abordaremos una receta rapida para obtener el codigo DDL de cualquier objeto en una base de datos Oracle de la versión 9i en adelante. Es probable que no tengan a la mano una herramienta grafica que permita la automatizacion de esta tarea, por tal motivo les compartimos este metodo muy sencillo utilizando el paquete DBMS_METADATA el cual esta incluido en la BD.

Con 3 instrucciones en una sesion de sql*plus y usando la función GET_DDL del paquete anteriorente mencionado, obtendremos las instrucciones completas para crear el objeto, veamos el ejemplo a continuación:

SQL> set long 2000000
SQL> set pagesize 0
SQL> select DBMS_METADATA.GET_DDL('VIEW','DBA_TABLES','SYS') from dual;

CREATE OR REPLACE FORCE VIEW "SYS"."DBA_TABLES" ("OWNER", "TABLE_NAME", "TABLE
SPACE_NAME", "CLUSTER_NAME", "IOT_NAME", "STATUS", 
...
  and ksppi.indx = ksppcv.indx
  and ksppi.ksppinm = '_dml_monitoring_enabled'

Revisemos los parametros que acepta este subprograma

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;

Object, name y schema son muy claros, los que requieren explicación son version, model y transform.
version : es usado para especificar el nivel de version de servidor para el cual se extraera el codigo, estableciendo un filtro que limita la extracción de metadata para objetos o características superiores a la versión indicada. Los valores pueden ser LATEST o la codificación a 3 numeros de version, por ejemplo 11.1.0 o 9.2.0; este valor no puede ser menor a 9.2.0.
model : por ahora esta limitada al valor 'ORACLE'
transform : con este parametro indicamos al subprograma si la metadata sera entregada en DDL o en XML.

¿Que sucede si no corresponde la declaración de parametros o si el objeto no existe? El subprograma regresa un error parecido a este:

ERROR:
ORA-31603: object "NOMBRE_OBJETO" of type TIPO not found in schema "ESQUEMA"

El paquete DBMS_METADATA provee un conjunto de subprogramas muy potente, que permite la extracción de cualquier instrucción DDL que conforme el estado actual de la base de datos: permisos concedidos, permisos de sistema, archivos de la base de datos, y así por el estilo; les recomiendo que lo estudien en la documentación oficial de Oracle.

Espero que les haya sido de utilidad, Saludos!

Si el articulo no satisfizo tus dudas, visita nuestros foros


Visita mi pagina en Oracle Community
Visita mi blog en Blogger
Follow IgnacioRuizMX on Twitter

Suscripcion a Contenido Sindicado(RSS)

Suscribir a Databases Hispamerica por Email



Distribuir

Distribuir contenido

Follow DatabasesLA on Twitter

En línea

En este momento hay 0 usuarios y %count invitados en línea.

Estadisticas

Locations of visitors to this page

hidden hit counter