Estou tentando fazer uma importação usando bomba de dados, mas estou lutando para encontrar as opções corretas. A exportação foi considerada como uma exportação de esquema. Estou tentando importar apenas as tabelas, sem outros objetos de banco de dados.
estou usando atualmente
INCLUDE=TABLE
TABLE_EXISTS_ACTION=REPLACE
REMAP_SCHEMA=
REMAP_TABLESPACE=
Isso está importando corretamente as tabelas, mas estou um pouco surpreso ao ver que a importação também está criando as restrições e gatilhos nas tabelas, ou tentando pelo menos. Os gatilhos estão falhando porque incluem um nome de esquema que não existe no banco de dados.
Achei que usando INCLUDE=TABLE
apenas as tabelas seriam incluídas. Aparentemente não é o caso. Não estou conseguindo usar EXCLUDE=CONSTRAINT
ou EXCLUDE=TRIGGER
pois já estou usando INCLUDE para limitar a importação a apenas tabelas.
Alguma idéia de como eu poderia estruturar a importação para importar apenas tabelas?
Você está certo ao afirmar que pensei que usando
INCLUDE=TABLE
apenas as tabelas seriam incluídas , mas inclui todos os objetos relacionados também. Isso significa que as restrições e acionadores serão criados para você quando você usarINCLUDE=TABLE
na importação.Solução possível
Se você tiver a possibilidade de recriar o dump usando o
expdp
comando, talvez queira apenas exportar as tabelas do esquema necessário e usar oINCLUDE
parâmetro.exp_include.par
Este é basicamente o arquivo de parâmetro expdp.
Isso criará um dump do esquema necessário e conterá apenas tabelas e objetos dependentes.
Depois de gerar o
*.dmp
arquivo necessário, importe usando aEXCLUDE=...
opção.imp_exclude.par
Este é o arquivo de parâmetro para o impdp.
Isso deve resultar na importação correta das tabelas.
Material de referência
Os parâmetros EXCLUDE e INCLUDE não podem ser especificados no mesmo trabalho de importação. Você pode usar um dos métodos a seguir para obter essas tabelas e índices, mas nenhum gatilho, restrição ou restrição referencial é importado. Se você também não quiser índices, poderá excluí-los da importação de maneira semelhante.
Método 1: você inclui tabelas em sua importação e usa outras diretivas INCLUDE para excluir gatilhos, restrições e restrições referenciais da importação. Um especifica o seguinte:
Não há gatilho que satisfaça a cláusula fornecida, o que significa que o nome do gatilho é uma string vazia. O mesmo vale para as restrições de restrição e referencial
Método 2: Você não usa a diretiva INCLUDE para especificar que somente tabelas devem ser importadas, mas usa um método diferente. Então você pode usar EXCLUDE para evitar a importação de gatilhos, restrições e restrições referenciais.
Você pode especificar a lista de tabelas que deseja importar em uma importação de tabela
Se a lista de tabelas for grande, esse método não é muito útil.
Outra maneira de especificar apenas tabelas é usar uma importação de tablespace. O número de espaços de tabela usados pelas tabelas no arquivo de despejo geralmente é muito menor que o número de tabelas
Exemplos
Eu uso o Oracle Database 11.2.0.4 Enterprise Edition para esses exemplos.
Criei um esquema SCOTT com algumas tabelas, gatilhos, procedimentos, restrições e restrições referenciais. Então fiz uma exportação de esquema com os seguintes parâmetros
Aqui estão as partes relevantes do arquivo de log desta exportação
Então usuário, concessões, procedimentos, restrições, restrições referenciais, gatilho e as cinco tabelas DEPT,EMP,SALGRADE; BONUS, JOB_HISTORY do usuário SCOTT são exportados.
Agora não vou importar este dump em um banco de dados, mas apenas criarei um arquivo SQL com as instruções que serão executadas pela importação. Isso pode ser obtido pelo parâmetro SQLFILE no arquivo de parâmetros de importação.
Primeiro eu faço uma importação completa do dumpfile. Isto irá importar tudo do arquivo dump
Isso resulta no seguinte
Se alguém fizer uma saída de esquema usando
um arquivo de log semelhante é criado.
Agora incluímos apenas as tabelas
Isso resulta no seguinte arquivo de log:
As tabelas e os objetos dependentes são criados. Agora usamos mais diretivas INCLUDE para evitar a importação de objetos indesejados:
Isso resulta exatamente no que queremos:
Se usarmos uma importação de tabela e especificarmos essas 5 tabelas e excluirmos os objetos indesejados, obteremos um arquivo de log semelhante
Também obtemos esse arquivo de log se usarmos uma importação de tablespace. Todos os objetos do usuário SCOTT estão no tablespace USERS.