lundi 12 août 2013

ORACLE - ERREUR LORS D'UN EXPDP ou IMPDP (ORA-22303 + ORA-00600 + ORA-06508 + ORA-06512)

Voici un exemple de l'erreur rencontrée :

UDE-00008: l'opération a généré l'erreur ORACLE 22303
ORA-22303: type "SYS"."DBMSOUTPUT_LINESARRAY" non trouvé
ORA-00600: code d'erreur interne, arguments : [kokaocr], [], [], [], [], [], [],
 [], [], [], [], []
ORA-06508: PL/SQL : unité de programme nommée : "SYS.DBMS_OUTPUT" introuvable
ORA-06512: Ó ligne 1

Cause : Cette erreur survient lors d'une tentative de mise à jour incomplète (Lancement d'un patch correctif)

1) Vérifier la source de l'erreur

SQL> desc KOTTD$
ERROR:
ORA-00600: internal error code, arguments: [kokaocr] , [], [], []



2) Appliquer les modifications suivantes :

SQL> alter table KOTTD$  add unique (SYS_NC_OID$);
SQL> alter table KOTTB$  add unique (SYS_NC_OID$);
SQL> alter table KOTAD$  add unique (SYS_NC_OID$);
SQL> alter table KOTMD$  add unique (SYS_NC_OID$);
SQL> alter table KOTTBX$ add unique (SYS_NC_OID$);
SQL> alter table KOTADX$ add unique (SYS_NC_OID$);


3) Vérifier à nouveau que tout est OK

SQL> desc KOTTD$

cette commande doit ne rien retourner


SQL> select index_name, column_name
from dba_ind_columns
where table_owner = 'SYS'
  and table_name in ('KOTTD$','KOTTB$','KOTAD$','KOTMD$','KOTTBX$','KOTADX$')
  and column_name = 'SYS_NC_OID$';


Cette commande doit retourner en tout et pour tout 6 Lignes