[ 2015-05-11 ]

Extract DDL de uno o todos los tablespaces de una base de datos

Para hacer de manera rápida un extract DDL desde SQL*Plus, podemos utilizar la función GET_DDL del package DBMS_METADATA.

La forma sería la siguiente:

SET LONG 9000 — Para imprimir el string completo
select
     dbms_metadata.get_ddl('TABLESPACE',tablespace_name)
from
     dba_tablespaces
[where tablespace_name = '{tablespace_name}'];

Si queremos la DDL de todos los tablespace omitimos la cláusula "WHERE", en caso contrario indicamos de que tablespace/s queremoos obtener la sentencia.

Veamos un ejemplo:

SQL> SET LONG 9000
SQL> select
     dbms_metadata.get_ddl('TABLESPACE',tablespace_name)
     from
     dba_tablespaces
     where tablespace_name = 'USERDAT';

DBMS_METADATA.GET_DDL('TABLESPACE',TABLESPACE_NAME)
--------------------------------------------------------------------------------

  CREATE TABLESPACE "USERDAT" DATAFILE
  SIZE 1073741824
  AUTOEXTEND ON NEXT 268435456 MAXSIZE 30720M,
  SIZE 1073741824
  AUTOEXTEND ON NEXT 268435456 MAXSIZE 30720M
  LOGGING ONLINE PERMANENT BLOCKSIZE 8192
  EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT
 NOCOMPRESS  SEGMENT SPACE MANAGEMENT AUTO
   ALTER DATABASE DATAFILE
  '+DATA1/orcl/datafile/USERDAT.401.941639715' RESIZE 17179869184
   ALTER DATABASE DATAFILE
  '+DATA1/orcl/datafile/USERDAT.460.943448159' RESIZE 16911433728

No hay comentarios:

Publicar un comentario