Domanda

Ho fatto i seguenti Comando:

expdp system/password@localdb ^
schemas=SCH directory=dumps_dir dumpfile=SCH_%date%.dmp logfile=expdpSCH_%date%.log
.

funziona alla grande, senza errori.Ma quando utilizzo il comando:

impdp system/password@localdb ^
schemas=SCH directory=dumps_dir dumpfile=SCH_%date%.dmp logfile=impdpSCH_%date%.log
.

Mi ha dato un sacco di errori che tavoli, sequenze e altre cose esistono già.Quindi ho una domanda, potrei usare un tale approccio o è sbagliato e dovrei usare qualcos'altro?

È stato utile?

Soluzione

Controllare la documentazione per ulteriori informazioni o digitare impdp help=y.C'è un parametro ( table_exists_action ) che definisce se si desidera sovrascrivere gli oggetti esistenti o se si desidera aggiungere.

.

table_exists_action
Azione da prendere se esiste già un oggetto importato.
Le parole chiave valide sono: APPEND, Sostituisci, [Skip] e troncati.

Altri suggerimenti

No, questo non è un modo possibile:

    .
  • La maggior parte degli oggetti non table esisterà già nel tuo schema.Hai già ricevuto tali messaggi di errore.L'importazione non lo sovrascriverà.
  • È possibile configurare in che modo l'esportazione dovrebbe funzionare se una tabella esiste già, ma se c'è una tabella che viene referenziata da un'altra tabella, quindi troncare e sostituire non funzionerà.
  • Anche se non vi è alcun riferimento di chiave estero a un indici da tavolo rallenterà l'importazione drammaticamente
  • possono verificarsi molti altri problemi (riguardanti trigger, partizioni, riferimenti ad altre tabelle e forse di più)

Quindi l'unico modo ragionevole per sincronizzare lo schema utilizzando Expdp / IPDP è quello di rilasciare lo schema prima di importare.

Se non si desidera rilasciare lo schema per qualche motivo, ma sostituire i dati delle tabelle sono necessarie molte operazioni aggiuntive.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top