Come trasferire i dati usando i comandi expdp e impdp?


29

Sono un Oracle Noob e la mia intenzione è quella di trasferire tutti i dati e metadati da uno schema a un altro schema all'interno di un database Oracle. Sto pensando di usare datapump expdpe impdpcomandi. Ho domande su questo:

  • Posso creare uno schema di destinazione senza un utente o devo prima creare un utente (che crea anche uno schema)?
  • Posso eseguire expdpe impdpcomandi usando l'account SYS (as sysdba)? È un metodo preferito?
  • Questa affermazione prende tutti gli oggetti (dati e metadati) da uno schema e li sposta in uno schema diverso?

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

    Quindi lo schema di destinazione è una copia esatta dello schema di origine dopo il impdpcomando?

Risposte:


31

impdp creerà l'utente se non è ancora presente, quindi non devi preoccuparti a meno che non sia quello che vuoi.

Non eseguire impdbo expdpcome sysdba, farlo solo se il supporto Oracle lo richiede in circostanze specifiche. Usa un utente normale per quello - quello a cui è stato concesso il dbaruolo per esempio. (Esistono i [IMPORT|EXPORT]_FULL_DATABASEprivilegi specifici per questo tipo di cose, dovrai concedere anche l'accesso agli oggetti della directory Oracle.)

Un'esportazione completa dello schema (metadati e contenuti) sarebbe effettivamente simile a:

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

Se si desidera importare in un utente / schema diverso (il database di destinazione può essere uguale all'origine), è possibile utilizzare:

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

Se non desideri un'importazione completa, puoi impostare alcuni filtri su dati e metadati. Vedere Filtro durante le operazioni di importazione .

La Guida alle Utilità ha tutti i dettagli, consiglio vivamente di leggere almeno la parte panoramica.


2

Per importare le tabelle troncate, vale a dire che vuoi solo che i dati vengano importati nella tabella:

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

Sopra il mio tavolo c'è quello deptche voglio importare. L'ho troncato prima. Dal dumpfile che è TEST.dmpe logfileche è expdpTEST.logvoglio che vengano importati solo i dati (la struttura della tabella sarà la stessa, quindi usiamo il parametro TABLE_EXISTS_ACTION).

Se hai troncato 2 tabelle, ad esempio empe dept, e la emptabella ha dept_idcome chiave esterna, devi deptprima importare la tabella e poi la emptabella per evitare errori durante l'importazione.

maggiori informazioni http://satya-dba.blogspot.in/2009/05/datapump.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.