Dopo delle ricerche in internet ho pensato di sfruttare il Metalink e in effetti il bug è ben noto e viene presentata la risoluzione finale applicando la patch oppure un accrocchio (workaround) finchè la patch non fosse uscita, questo documento veniva scritto nel Gennaio 2008 e modificato a settembre 2010.
Ad oggi ho verificato, la patch è stato rilasciata ma non ovviamente per tutti gli OS, infatti per Windows non c'è ancora.
Allora sono intervenuto come descritto nel workaround.
In pratica l'errore che si verificava era questo usando DataPump nel mio caso:
ORA-39014: One or more workers have prematurely exited.
ORA-39029: worker 1 with process name "DW01" prematurely terminated
ORA-31672: Worker process DW01 died unexpectedly.
The alert log shows a core dump:
ORA-07445: exception encountered: core dump [ACCESS_VIOLATION] [_evaopn2+578]
Il problema è che se una sub-query utilizza l'EXISTS e va ad intterogare una vista non-mergeable si verifica questo errore.
La soluzione proposta in assenza di patch è quella di modificare principalmente 3 parametri:
_complex_view_mergingHo preferito farlo utilizzando anche scope=spfile anche se dopo l'istanza andava riavviata, tuttavia si poteva fare anche a livello solo di system eliminando il parametro scope.
event
_optimizer_cost_based_transformation
in
alter system set event= '38066 trace name context forever, level 2' scope=spfile;
alter system set "_complex_view_merging" = false scope=spfile;
alter system set "_optimizer_cost_based_transformation"=off scope=spfile;
In effetti dopo questa modifica il Data Pump ha ripreso a funzionare.
L'unica cosa che mi stupisce è che in un altro database sempre Oracle 10.2.0.3 però nella versione Enterprise, questo errore non è mai avvenuto.
Nessun commento:
Posta un commento