Importe todos os links de banco de dados usando dbms_datapump
-
29-09-2020 - |
Pergunta
Versão do banco de dados de origem:11.2.0.3
Versão do banco de dados de destino:12.1.0.2
Estou tentando importar todos os links de banco de dados de um banco de dados para outro usando dbms_datapump.O código está sendo executado no banco de dados de destino acima e extraindo os links do banco de dados do banco de dados de origem acima por meio de um link de banco de dados.
Eu usei dbms_datapump.metadata_filter no passado para importar apenas determinados objetos (como funções ou procedimentos).No entanto, o seguinte retorna ORA-39001:valor de argumento inválido:
dbms_datapump.metadata_filter(h1,'INCLUDE_PATH_EXPR','IN (''DATABASE LINK'')');
Portanto, tentei a versão plural que também retornou ORA-39001:
dbms_datapump.metadata_filter(h1,'INCLUDE_PATH_EXPR','IN (''DATABASE LINKS'')');
Eu sei que devo estar faltando algo básico aqui, mas pesquisar sobre esse assunto tem sido irritante, pois os resultados da pesquisa com "dbms_datapump" e "link do banco de dados" na mesma pesquisa retornaram apenas resultados sobre como importar por meio de um link do banco de dados, e não como para importar os links do banco de dados diretamente.
Eu costumava importar os links do banco de dados diretamente usando:
select DBMS_LOB.SUBSTR@dblinkimp(DBMS_METADATA.GET_DDL@dblinkimp
('DB_LINK', '[DBlinkName]', '[SchemaName]')) from dual@dblinkimp;
Então eu executaria a saída da instrução acima usando execute imediato, mas esta não é mais uma opção válida a partir de 11.2.0.4 (consulte Metalink Doc ID 1905221.1).
Solução
Não é DATABASE LINK
ou DATABASE LINKS
, isso é DB_LINK
.Você pode encontrar os valores válidos em DATABASE_EXPORT_OBJECTS
, SCHEMA_EXPORT_OBJECTS
e TABLE_EXPORT_OBJECTS
.