¿Hay una manera conveniente de importar un esquema en Oracle 11gR2 usando un único espacio de tabla nuevo o diferente al que se originó la información?
Como ejemplo, he exportado BLOG_DATA de OLDDB, donde todos los datos del usuario se almacenan en el espacio de tabla USERS.
En NEWDB, me gustaría importar el esquema BLOG_DATA, pero almacenar los objetos de usuario en el espacio de tabla BLOG_DATA, creado específicamente para este usuario.
Creé el usuario BLOG_DATA, creé el espacio de tabla BLOG_DATA y lo configuré como el espacio de tabla predeterminado para ese usuario y agregué una cuota ilimitada apropiada.
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
El esquema se exportó desde OLDDB con algo como
exp blog_data/secretpassword@OLDDB file=blog_data.dmp
Después de leer la excelente respuesta de Phil a continuación, me pregunté :
Dado que los datos no tienen otro lugar al que ir que el espacio de tabla predeterminado, el único espacio de tabla en el que el usuario tiene una cuota, ¿esto obligará efectivamente a imp a colocar todos los objetos de usuario en ese espacio de tabla predeterminado?
imp blog_data/secretpassword@NEWDB file=blog_data.dmp
¿Esto colocaría todo el esquema blog_data en el espacio de tabla blog_data en NEWDB? ¿Hay alguna razón por la que esto no funcionaría o que tendría problemas con ciertos objetos, etc.?
actualizar:
Hice una prueba rápida y descubrí que este era el caso. Imp
coloca objetos en el espacio de tabla predeterminado para ese usuario, siempre que no pueda colocarlo en el espacio de tabla original (por ejemplo, el espacio de tabla no existe). Explicación completa: http://www.dolicapax.org/?p=57
Aún así, supongo que usar Data Pump como Phil sugiere podría ser la opción preferida.
exp
utilidad heredada o conexpdp
(bomba de datos)?