Jak przesyłać dane za pomocą poleceń expdp i impdp?


29

Jestem Oracle noob i moim zamiarem jest przeniesienie wszystkich danych i metadanych z jednego schematu do innego schematu w bazie danych Oracle. Planuję użyć bazy danych expdpi impdppoleceń. Mam pytania dotyczące tego:

  • Czy mogę utworzyć schemat docelowy bez użytkownika, czy powinienem najpierw utworzyć użytkownika (który również tworzy schemat)?
  • Czy mogę wykonywać expdpi wykonywać impdppolecenia za pomocą konta SYS (as sysdba)? Czy to preferowana metoda?
  • Czy to zdanie pobiera wszystkie obiekty (dane i metadane) ze schematu i przenosi je do innego schematu?

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

    Czy więc schemat docelowy jest dokładną kopią schematu źródłowego po wydaniu impdppolecenia?

Odpowiedzi:


31

impdp utworzy użytkownika, jeśli jeszcze go nie ma, więc nie musisz się tym martwić, chyba że nie tego chcesz.

Nie uruchamiaj impdblub expdpjako sysdba, rób to tylko wtedy, gdy wsparcie Oracle zażąda tego w określonych okolicznościach. Skorzystaj w tym celu ze zwykłego użytkownika, któremu dbana przykład przyznano rolę. (Istnieją [IMPORT|EXPORT]_FULL_DATABASEspecjalne uprawnienia do tego rodzaju rzeczy, musisz także przyznać dostęp do obiektów katalogowych Oracle).

Pełny eksport schematu (metadane i zawartość) rzeczywiście wyglądałby następująco:

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

Jeśli chcesz zaimportować do innego użytkownika / schematu (docelowa baza danych może być taka sama jak źródło), możesz użyć:

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

Jeśli nie chcesz pełnego importu, możesz ustawić niektóre filtry zarówno dla danych, jak i metadanych. Zobacz Filtrowanie podczas operacji importowania .

Media Guide posiada wszystkie szczegóły, gorąco polecam czytanie przynajmniej opis części.


2

Aby zaimportować obcięte tabele, tzn. Chcesz tylko zaimportować dane z powrotem do tabeli:

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

Ponad moim stołem jest to, deptco chcę zaimportować. Obciąłem go wcześniej. Z pliku zrzutu, który jest TEST.dmpi logfilektóry jest expdpTEST.log, chcę importować tylko dane (struktura tabeli będzie taka sama, więc używamy parametru TABLE_EXISTS_ACTION).

Jeśli obcięto 2 tabele, na przykład empi dept, a emptabela ma dept_idjako klucz obcy, najpierw należy zaimportować depttabelę, a następnie emptabelę, aby uniknąć błędów podczas importu.

więcej informacji http://satya-dba.blogspot.in/2009/05/datapump.html

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.