Impossible de droper une QUEUE TABLE.
Humm.. encore un jour sans
Symptômes :
sys@TOTO.WORLD> exec DBMS_AQADM.DROP_QUEUE_TABLE(’TOTO.LAQUEUE’);
BEGIN DBMS_AQADM.DROP_QUEUE_TABLE(’TOTO.LAQUEUE’); END;*
ERREUR à la ligne 1 :
ORA-24002: QUEUE_TABLE TOTO.LAQUEUE n’existe pas
ORA-06512: à “SYS.DBMS_AQADM_SYS”, ligne 3013
ORA-06512: à “SYS.DBMS_AQADM”, ligne 197
ORA-06512: à ligne 1
Cause :
La cause de tout ça, un import / export un peu buggé sur Oracle 9i pour ceux que ca intéresse.
Notre document de travail : Note:203225.1
Bien bien bien … en gros le dictionnaire est corrompu, soit la table n’existe plus mais la queue si, ou inversement.
Si la queue est restée mais que la table n’est plus la alors on peut tenter de forcer la suppression de la queue :
sys@TOTO.WORLD> exec DBMS_AQADM.DROP_QUEUE_TABLE(queue_table=> ‘TOTO.LAQUEUE’,FORCE => TRUE);
Mais en l’occurence mon problème est que la queue n’existe plus, mais la table si … alors ca se complique …
On commence par nettoyer tout ce qui a un rapport avec la queue :
SELECT object_name, object_type FROM user_objects WHERE object_name like ‘%TOTO%’;
.. aïe .. aucune ligne sélectionnée
si la requête renvoie des lignes, alors dropper les objets.
ALTER SESSION SET EVENTS ‘10851 trace name context forever, level 2′;
Attention , on passe au ménage sauvage, sauvegardez la base avant !
DROP TABLE TOTO CASCADE CONSTRAINTS;
DROP TABLE AQ$_TOTO_<X> CASCADE CONSTRAINTS; ( si les queues existent, vérifier dans dba_objects )
Et voili voila !
a+

Post a comment