Як передавати дані за допомогою команд expdp та impdp?


29

Я нобул Oracle, і мій намір полягає в тому, щоб передати всі дані та метадані з однієї схеми в іншу схему в базі даних Oracle. Я планую використовувати накачування даних expdpта impdpкоманди. У мене є питання щодо цього:

  • Чи можу я створити цільову схему без користувача або я повинен спершу створити користувача (який також створює схему)?
  • Чи можу я виконувати expdpта impdpкоманди за допомогою облікового запису SYS (як sysdba)? Це бажаний метод?
  • Чи приймає це твердження всі об'єкти (дані та метадані) зі схеми та переміщує їх в іншу схему?

    expdp \"/ as sysdba\" schemas=<schemaname> directory=dumpdir dumpfile=<schemaname>.dmp logfile=expdp_<schemaname>.log  

    Тож цільова схема є точною копією вихідної схеми після impdpкоманди?

Відповіді:


31

impdp створить користувача, якщо його ще немає, тому вам не доведеться турбуватися про нього, якщо це не те, що ви хочете.

Не запускайте impdbчи expdpяк sysdba, лише робіть це, якщо підтримка Oracle вимагає цього в конкретних обставинах. Використовуйте для цього звичайного користувача - такого, якому, наприклад, надана dbaроль. (Існують [IMPORT|EXPORT]_FULL_DATABASEпривілеї, спеціально для цього типу речей, вам також потрібно надати доступ до об'єктів (-ів) Oracle.)

Повний експорт схеми (метаданих та вмісту) дійсно виглядатиме так:

expdp user/pass schemas=<schemaname> directory=dumpdir \
      dumpfile=<schemaname>.dmp \
      logfile=expdp_<schemaname>.log

Якщо ви хочете імпортувати до іншого користувача / схеми (цільова база даних може бути такою ж, як і джерело), ​​ви можете використовувати:

impdp user/pass schemas=schema1 directory=dumpdir \
      remap_schema=schema1:schema2 \
      dumpfile=schema1.dmp \
      logfile=impdp_schema2.log

Якщо ви не хочете повного імпорту, ви можете встановити деякі фільтри як на дані, так і на метадані. Див. Розділ Фільтрування під час імпортних операцій .

У Посібнику з комунальних послуг є всі деталі, я настійно рекомендую ознайомитися хоча б з оглядовою частиною.


2

Для імпорту обрізаних таблиць, тобто потрібно лише імпортувати дані назад до таблиці:

impdp user/pass TABLES=dept DIRECTORY=TEST_dir dumpfile=TEST.dmp logfile=expdpTEST.log TABLE_EXISTS_ACTION=REPLACE

Над моєю таблицею є те, deptщо я хочу імпортувати. Я її усікав раніше. З дампфайла, який є TEST.dmp, і logfileякий є, expdpTEST.logя хочу імпортувати лише дані (структура таблиці буде такою ж, тому ми використовуємо параметр TABLE_EXISTS_ACTION).

Якщо у вас є усічені 2 таблиці, наприклад, empта dept, а empтаблиця має dept_idяк зовнішній ключ, то вам потрібно спочатку імпортувати deptтаблицю, а потім empтаблицю, щоб уникнути помилок під час імпорту.

більше інформації http://satya-dba.blogspot.in/2009/05/datapump.html

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.