O Oracle SQL Developer é capaz de exportar DDL através. Tools -> Database Export...
Isso funciona muito bem, mas requer intervenção manual.
Eu sei DBMS_METADATA.get_ddl()
, mas descobri que a exportação não é perfeita. Encontrei problemas em que o DBMS_METADATA
DDL exportado não era utilizável sem antes corrigir problemas como quebras no meio de uma palavra-chave e coisa pior. No entanto, se alguém souber uma maneira de exportar DDL através DMBS_METADATA
que possa ser executada sem correções manuais, isso também seria uma ótima solução.
Basicamente, estou procurando uma maneira automática / programável de exportar DDL idêntico ao que é exportado pela maneira manual.
Como eu posso fazer isso?
COL
, como é mostrado neste exemplo , e funcionará.Respostas:
Bem, se o sqlplus está danificando sua saída dbms_metadata.get_ddl, por que não selecionar a saída em um CLOB e gravar o CLOB no sistema de arquivos.
por exemplo
Isso deve fazer com que você DDL correto, sem que a saída seja prejudicada. A única coisa é que o script será criado no servidor do banco de dados e não no cliente de onde você chama o sqlplus.
O script é salvo no diretório apontado pela entrada 'DATA_PUPM_DIR' no DB Server. ie
Além do mais, você pode adicionar algum tipo de iteração em todas as tabelas / índices etc. de um esquema e obter o DDL completo de um esquema rapidamente. Eu faço isso o tempo todo.
fonte
O motivo pelo qual você está tendo problemas
dbms_metadata.get_ddl
é que ele geraCLOB
s com tamanho de até 4 GB. Por padrão, o SQL * Plus e o Oracle SQL Developer truncam o texto longo para que eles não joguem o lixo no lixo com grandes quantidades de texto.É muito fácil substituir esse comportamento no SQL * Plus com alguns
SET
comandos e obter uma DDL limpa.O script que você precisa é:
fonte
As seguintes transformações podem ajudar. Não usei o método DBMS_XSLPROCESSOR.CLOB2FILE, mas usei-os para migrar um banco de dados Oracle do Solaris para o Linux. Não pude usar a bomba de dados devido à versão do Oracle que eles estavam usando e ao fato de usarem tipos de dados XML para tipos de dados de coluna.
fonte