Existe uma maneira conveniente de importar um esquema para o Oracle 11gR2 usando um único espaço de tabela novo ou diferente do local de origem dos dados?
Como exemplo, eu exportei BLOG_DATA do OLDDB, onde todos os dados do usuário são armazenados no espaço de tabela USERS.
No NEWDB, gostaria de importar o esquema BLOG_DATA, mas armazene os objetos de usuário no espaço de tabela BLOG_DATA, criado especificamente para esse usuário.
Criei o usuário BLOG_DATA, criei o espaço de tabela BLOG_DATA e o configurei como o espaço de tabela padrão para esse usuário e adicionei uma cota ilimitada apropriada.
CREATE TABLESPACE blog_data DATAFILE SIZE 1G;
CREATE USER blog_data IDENTIFIED BY secretpassword DEFAULT TABLESPACE blog_data QUOTA UNLIMITED ON blog_data;
GRANT connect,resource TO blog_data
O esquema foi exportado do OLDDB com algo como
exp blog_data/secretpassword@OLDDB file=blog_data.dmp
Depois de ler a excelente resposta de Phil abaixo, me perguntei :
Como os dados não têm outro lugar para ir além do espaço de tabela padrão - o único espaço de tabela no qual o usuário possui uma cota - isso efetivamente força o imp a colocar todos os objetos de usuário nesse espaço de tabela padrão?
imp blog_data/secretpassword@NEWDB file=blog_data.dmp
Isso colocaria todo o esquema blog_data no espaço de tabela blog_data no NEWDB? Existe alguma razão para que isso não funcione ou que eu tenha problemas com certos objetos, etc.?
atualizar:
Fiz um teste rápido e achei que era esse o caso. Imp
coloca objetos no espaço de tabela padrão para esse usuário, desde que não possa colocá-lo no espaço de tabela original (por exemplo, o espaço de tabela não existe). Explicação completa: http://www.dolicapax.org/?p=57
Ainda assim, suponho que o uso do Data Pump como Phil sugere possa ser a opção preferida.
exp
utilitário herdado ou comexpdp
(bomba de dados)?