Есть ли удобный способ импортировать схему в Oracle 11gR2, используя одно новое или другое табличное пространство, отличное от того, где были получены данные?
В качестве примера я экспортировал BLOG_DATA из OLDDB, где все пользовательские данные хранятся в табличном пространстве USERS.
На NEWDB я хотел бы импортировать схему BLOG_DATA, но сохранить пользовательские объекты в табличном пространстве BLOG_DATA, созданном специально для этого пользователя.
Я создал пользователя BLOG_DATA, создал табличное пространство BLOG_DATA и установил его в качестве табличного пространства по умолчанию для этого пользователя и добавил соответствующую неограниченную квоту.
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
Схема была экспортирована из OLDDB с чем-то вроде
exp blog_data/secretpassword@OLDDB file=blog_data.dmp
Прочитав превосходный ответ Фила ниже, я подумал :
Поскольку для данных нет другого места, кроме табличного пространства по умолчанию - единственного табличного пространства, на которое пользователь имеет квоту, - будет ли это эффективно заставлять imp помещать все пользовательские объекты в это табличное пространство по умолчанию?
imp blog_data/secretpassword@NEWDB file=blog_data.dmp
Будет ли это тогда поместить всю схему blog_data в табличное пространство blog_data на NEWDB? Есть ли какая-то причина, по которой это не сработает или у меня возникнут проблемы с определенными объектами и т. Д.?
Обновить:
Я сделал быстрый тест и обнаружил, что это так. Imp
помещает объекты в табличное пространство по умолчанию для этого пользователя, при условии, что он не может поместить его в исходное табличное пространство (например, табличное пространство не существует). Полное объяснение: http://www.dolicapax.org/?p=57
Тем не менее, я полагаю, что использование Data Pump, как предполагает Фил, может быть предпочтительным вариантом.
exp
утилиты или с помощьюexpdp
(насоса данных)?