Gerando o ddl de objetos - DBMS_METADATA


Uma situação que pode ser comum na rotina de um DBA é a necessidade de recriar algum objeto da base ou mesmo replicar um usuário com seus respectivos privilégios. Esta atividade pode ser realizada por ferramentas de exportação e importação de dados como o datapump e o export comum.

Porém para algumas situações onde não é possível utilizar ferramentas como o datapump a Oracle disponibiliza uma API capaz de fazer a engenharia reversa dos objetos, através da package DBMS_METADATA.

A sintaxe do processo é basicamente a demonstrada abaixo:
select dbms_metadata.get_ddl('TIPO_OBJETO','NOME_OBJETO','OWNER') from dual;

Como exemplo prático, estarei recuperando a ddl da tabela teste do schema JHONATA.
SQL> select dbms_metadata.get_ddl('TABLE','TESTE','JHONATA') from dual;

DBMS_METADATA.GET_DDL('TABLE','TESTE','JHONATA')
--------------------------------------------------------------------------------

  CREATE TABLE "JHONATA"."TESTE"
   (    "NOME" VARCHAR2(20),
        "DATA" DATE
   )
A utilização desta package é bastante simples e muito útil no dia a dia, nos mais variados tipos de situações, desde a necessidade de recriação de um objeto especifico, owner, permissões, etc

Fonte: http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_metada.htm

Comentários