ORA-00600 [16201] - Impossible d’executer/dropper un package ou procedure.

Posted on mars 19th, 2007 in Bug, DataBase, Oracle by David

Oracle : 8.1.7

OS : HPUX PA-RISC

Symptomes :

Lors de l’import d’une procédure stockée “wrapped” ( encrypté ? ) vous avez eu les erreurs suivantes :

Warning: Entry/Exit code is optimized. Cannot restore context
(UNWIND 22)

IMP-00017: following statement failed with ORACLE error 600:
“GRANT EXECUTE ON “TOTO” TO “TOTOUSER”"
IMP-00003: ORACLE error 600 encountered
ORA-00600: internal error code, arguments: [16201], [], [], [], [], [], [], []

Ensuite vous ne pouvez plus supprimer la procédure ou l’éxécuter :

sys@SID.WORLD> drop procedure TOTOUSER.TOTO;
drop procedure totouser.toto
*
ERREUR à la ligne 1 :
ORA-00600: internal error code, arguments: [16201], [], [], [], [], [], [], []

Solution :

Le dictionnaire est corrompu ! vous avez peut être rencontré le bug # 2422726

tout d’habord il faut remettre le dictionnaire en ordre pour pouvoir supprimer cette procédure.

Avant toute chose, sauvegardez votre base !

Il faut être connecté en tant que sys à la base.

On va commencer par récupere l’id de l’objet qui nous interesse :

select object_id , object_name,object_type from dba_objects
where object_name=’TOTO’
and object_type like ‘%PACKAGE%’;

OBJECT_ID OBJECT_NAME OBJECT_TYPE
——————- ———————————— ————————–
-
2313 TOTO PACKAGE
2347 TOTO PACKAGE BODY

Et on va voir s’il manque une ligne quelque part :

select obj#,name, type# from obj$
where obj# in (2313,2347);

OBJ# NAME TYPE#
————— —————————— ———-
2347 TOTO 11
2313 TOTO 9

select * from procedure$
where obj# in (2313,2347);

OBJ# AUDIT$ STORAGESIZE OPTIONS
———- ————————————– ———– ———-
2313 ——————————–
0

Donc la j’ai bien une ligne manquante dans procedure$ , je vais en insérer une bidon le temps de dropper le package.

insert into procedure$ values
(2313,’——————————–’,null,0);
insert into procedure$ values
(2347,’——————————–’,null,2);

OPTIONS value = 0 for a PACKAGE and 2 for a PACKAGE BODY

Ensuite vous n’avez plus qu’a supprimer le package :)

Inutile d’essayer de réimporter, il faut corriger le bug # 2422726 avant.

Voila !

David.

Post a comment