ORA-12805:requête parallèle serveur est décédé de façon inattendue
J'ai un PL/SQL script comme celui-ci...
DECLARE
CURSOR curs_delete
IS
SELECT cus_num
FROM dob.cust_table GROUP BY cust_num HAVING COUNT(*)>1;
TYPE row_cust_num IS TABLE OF dob.cust_table.cust_num%TYPE;
col_cust_num row_cust_num;
BEGIN
OPEN curs_delete;
LOOP
FETCH curs_delete
BULK COLLECT INTO col_cust_num LIMIT 10000;
EXIT WHEN col_cust_num.EXISTS (1) = FALSE;
FORALL i IN 1 .. col_cust_num.LAST
DELETE FROM cust_table
WHERE cust_num = col_cust_num (i);
COMMIT;
END LOOP;
CLOSE curs_delete;
END;
Cette requête renvoie ORA-12805:parallel query server died unexpectedly
erreur. Je ne suis pas sûr pourquoi elle est là. La requête select dans curseur retourné autour de 415 dossiers quand j'ai eu cette erreur.
Quiconque de comprendre pourquoi cette erreur arrive?
- Trop vague et sujette à mettre comme une réponse, mais de toute façon: s'engager au sein d'un curseur de la boucle peuvent invalider le curseur. Essayez de prendre le
COMMIT
de l'intérieur de la boucle et voir si cela améliore le résultat.
Vous devez vous connecter pour publier un commentaire.
C'est un problème pour votre DBA à résoudre, il ya un grand nombre de causes possibles. Quelqu'un a besoin de regarder dans le Journal d'Alerte et de vérifier les fichiers de trace dans le
bdump
répertoire pour des informations de diagnostic.En attendant, si vous avez seulement 415 dossiers à supprimer, vous devez juste utiliser directement SQL: