Чи є зручний спосіб імпортувати схему в 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 blog_data/secretpassword@NEWDB file=blog_data.dmp
Чи було б це розмістити всю схему blog_data в просторі таблиць blog_data в NEWDB? Чи є якась причина, чому це не працює, або я зіткнувся з проблемами з певними об'єктами тощо?
оновлення:
Я зробив швидкий тест і виявив, що це так. Imp
розміщує об'єкти в просторі таблиць за замовчуванням для цього користувача, якщо він не може розмістити його в початковому просторі таблиць (наприклад, простір таблиць не існує). Повне пояснення: http://www.dolicapax.org/?p=57
Тим не менш, я вважаю, що використання Data Pump, як пропонує Філ, може бути кращим варіантом.
exp
утиліти або за допомогоюexpdp
(насос даних)