Ir al contenido principal

Dba stuff

Un cajon desastre para el día a día

Dba stuff

Menú principal

  • Inicio

Navegación de entradas

← Anterior Siguiente →

Obtener el código de un objeto con DBMS_METADATA.GET_DDL

Posted on 22 julio, 2014 por admin

En alguna otra entrada hemos visto el uso de la llamada DBMS_METADATA.
Hoy vamos a ver las pequeñas peculiaridades que rodean a la variable para poder extraer el código de varias tablas.

La primera de las cosas a tener en cuenta es el formateo de la salida.
Hemos de prever el tamaño del código de las tablas, con lo que deberemos de formatear el sqlplus, para ellos pondremos la línea al máximo permitido y un valor muy alto en long

set head off
set feedback off
set pages 0
set linesize 32767
set long  2000000

Lo segundo que hemos de tener en cuenta es que , no vamos a tener ningún tipo de carácter que nos marce la separación entre las sentencias, con lo que deberemos de decirle a la librería dbms_metadata que nos marque el carácter. Ese parámetro es un parámetro de sesión con lo que deberemos de ejecutarlo en cada sesión en la que queramos obtener los datos.

exec dbms_metadata.set_transform_param 
   (DBMS_METADATA.SESSION_TRANSFORM, 'SQLTERMINATOR',TRUE);

A partir de aquí ya podemos usar la llamada DBMS_METADATA.GET_DDL para obtener el código deseado :

select DBMS_METADATA.GET_DDL
 ('TABLE','NOMBRE_TABLA','OWNER') 
      from dual ;

Nota En el caso de las tablas podemos seleccionar algunas de las características que queremos mostrar (incluso transformarlas) como pueden ser las de almacenamiento o particionamiento con la opción SET_TRANSFORM_PARAM.

Mas información en lamágina de DBMS_METADATA de la documentación de Oracle.

Esta entrada fue publicada en 11g, 12c, Tunning y etiquetada dbms_metadata, DBMS_METADATA.GET_DDL, GET_DDL por admin. Guarda enlace permanente.
Funciona gracias a WordPress