Oracle 12.1.0.2 Datapump import ORA-00001: unique constraint (SYS.PK_COL_GROUP_USAGE$) violated

lunedì 4 dicembre 2017 alle 04:40 | Pubblicato su 12c, Diario | Lascia un commento

Mi è uscito un titolo piuttosto lungo per questo post ma volevo riportare più informazioni possibili sul problema che ho incontrato e che qui voglio descrivere.

Qualche tempo fa, dopo che ci pensavo da mesi ho deciso di implementare delle procedure PL/SQL per gestire importazioni ed esportazioni con Oracle Datapump. Preso poi dall’entusiamo ho implementato una procedura per “duplicare” schemi db, operazione che mi viene richiesta sempre più frequentemente. Devo precisare che lavoro sia con Oracle 11.2 che con Oracle 12.1  per cui mi sono basato sulla documentazione della 11.2. Non mi risulta poi che a livello di funzionalità base, come quelle che uso io, ci siano differenze sostanziali fra le due versioni. Ho fatto qualche test su Oracle 11.2 e non ho avuto problemi, su Oracle 12.1 invece mi sono trovato sui log il seguente messaggio:

Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
ORA-39126: Worker unexpected fatal error in KUPW$WORKER.STATS_LOAD [MARKER]
MARKER
ORA-00001: unique constraint (SYS.PK_COL_GROUP_USAGE$) violated
ORA-06512: at “SYS.DBMS_SYS_ERROR”, line 105
ORA-06512: at “SYS.KUPW$WORKER”, line 11265
—– PL/SQL Call Stack —–
object line object
handle number name
0xfa0df780 27116 package body SYS.KUPW$WORKER
0xfa0df780 11286 package body SYS.KUPW$WORKER
0xfa0df780 24286 package body SYS.KUPW$WORKER
0xfa0df780 24415 package body SYS.KUPW$WORKER
0xfa0df780 20692 package body SYS.KUPW$WORKER
0xfa0df780 10206 package body SYS.KUPW$WORKER
0xfa0df780 13381 package body SYS.KUPW$WORKER
0xfa0df780 3173 package body SYS.KUPW$WORKER
0xfa0df780 12035 package body SYS.KUPW$WORKER
0xfa0df780 2081 package body SYS.KUPW$WORKER
0xca7f92f8 2 anonymous block
DBMS_STATS.EXPORT_STATS_FOR_DP
In STATS_LOAD with process_order 3538
Fixing up the name in the impdp stat table
ORA-39126: Worker unexpected fatal error in KUPW$WORKER.STATS_LOAD [MARKER]
ORA-30926: unable to get a stable set of rows in the source tables
ORA-06512: at “SYS.DBMS_SYS_ERROR”, line 95
ORA-06512: at “SYS.KUPW$WORKER”, line 11259
—– PL/SQL Call Stack —–
object line object
handle number name
0xfa0df780 27116 package body SYS.KUPW$WORKER
0xfa0df780 11286 package body SYS.KUPW$WORKER
0xfa0df780 24286 package body SYS.KUPW$WORKER
0xfa0df780 24415 package body SYS.KUPW$WORKER
0xfa0df780 10105 package body SYS.KUPW$WORKER
0xfa0df780 13381 package body SYS.KUPW$WORKER
0xfa0df780 3173 package body SYS.KUPW$WORKER
0xfa0df780 12035 package body SYS.KUPW$WORKER
0xfa0df780 2081 package body SYS.KUPW$WORKER
0xca7f92f8 2 anonymous block
DBMS_STATS.EXPORT_STATS_FOR_DP
In STATS_LOAD with process_order 3538
Fixing up the name in the impdp stat table
Job “EXPDPUSER”.”TESTCRIDP_IMP” stopped due to fatal error at Mon Dec 4 13:49:14 2017 elapsed 0 00:37:36

Fra l’altro la procedura non ha dato alcun errore. Da una prima ricerca sono capitato su questa discussione sul forum oracle, dalla quale emerge gia il suggerimento di escludere le statistiche Oracle, cosa che io per la verità non ho mai sentito il bisogno di fare e quindi non ho mai fatto. Poi non ricordo più come, sono arrivato alla nota del supporto Oracle: “DataPump Import (IMPDP) Reports ORA-1 When Processing SCHEMA_EXPORT/STATISTICS/MARKER (Doc ID 2277109.1)

Quindi ho deciso che era ora di escludere almeno dall’importazione le statistiche  e così cercando aiuto nell’implementazione di questa modifica sono anche capitato su questo interessante post di Mike Smithers che suggerisce anche un altro valido motivo per escludere le statistiche. Devo dire che questo aspetto delle prestazioni sull’importazione delle statistiche non ho approfondito anche se credo meriterebbe.

Ho riprovato tutte le combinazioni e io sono riuscito a riprodurre il problema solo con la procedura PL/SQL di duplicazione  la quale utilizza un database link che punta a se stesso. La stessa cosa avviene se uso il comando impdp sempre con il dtabase link.  L’import da un dump su file, sia interfaccia PL/SQL che da comando “impdp” non mi ha mai dato questo problema.

 

Annunci

Lascia un commento »

RSS feed for comments on this post. TrackBack URI

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

w

Connessione a %s...

Crea un sito o un blog gratuitamente presso WordPress.com.
Entries e commenti feeds.

%d blogger hanno fatto clic su Mi Piace per questo: