I comandi EXPDP / IPDP sono appropriati per la sincronizzazione dello schema giornaliero?
-
29-09-2020 - |
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?
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.