Імпорт схеми в новий або інший простір таблиць


13

Чи є зручний спосіб імпортувати схему в 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(насос даних)
Philᵀᴹ

У прикладі він експортувався за допомогою звичайної утиліти exp, як показано вище. Я припускаю, що можна так само легко використовувати expdp і забрати файл зі старого сервера db, чи полегшить би перехід на нову таблицю?
Рой

Я висвітлював обидва у своїй відповіді. Використовуйте насос для передачі даних - виконувати це завдання простіше
Philᵀᴹ

Відповіді:


15

Насправді неможливо вказати іншу таблицю під час імпорту за допомогою impутиліти oracle . Однак, як вирішення, ви можете заздалегідь створити таблиці, виконавши ROWS=Nімпорт у USERSтабличний простір, потім alter table mytable move tablespace BLOG_DATA;для кожної таблиці перемістити їх у нову табличну область, а потім виконати імпорт знову за допомогою IGNORE=Yпараметра, щоб ігнорувати помилки створення таблиці та імпортувати всі даних.

Якщо дані були експортовані за допомогою Data Pump ( expdp), (як осторонь, всі мають використовувати це в наші дні, а не стару спадщину exp/ impутиліти), ви можете легко імпортувати в іншу таблицю за допомогою REMAP_TABLESPACEпараметра.

наприклад:

impdp scott/tiger@ZOMG file=blog_data.dmp directory=mydir remap_tablespace=USERS:BLOG_DATA

Дуже дякую, Філ. Мені було цікаво: Якщо користувач, який імпортується до виключно, має квоту на табличному просторі за замовчуванням, чи змусить це імпонувати розміщувати всі імпортовані об'єкти у цій таблиці таблиць за замовчуванням незалежно від макета у джерелі даних?
Рой

Я працюю над чимось подібним, але це ціла міграція БД за допомогою expdp / impdp, тому що я хочу, щоб наша QA env відповідала виробництву. Якщо я використовую remap_tablespace, він перезаписує кожну схему в інший єдиний простір таблиць, однак я думаю, що я можу запустити команду impdp один раз на схему та використовувати remap_tablespace. Це має досягти роботи.
Ніколя де Фонтеней

0

Ви повинні дотримуватися наведених нижче кроків: -

  • Експорт користувача
  • Виконайте імпорт за допомогою команди.
    imp system/manager file=export.dmp indexfile=newfile.sql
    Це імпортує дані та збереже всі параметри newfile.sql.
  • Викиньте потрібні предмети.
  • Запустіть скрипт newfile.sqlпісля зміни табличних просторів.
  • Імпортуйте з резервної копії необхідні об’єкти.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.