[oracle]ORA-12805:parallel 查询服务器意外死机

标签: Oracle
发布时间: 2017/4/15 19:00:39
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有这样一个 PL/SQL 脚本...

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;

此查询返回 ORA-12805:parallel query server died unexpectedly 错误。我不知道为什么它发生。在游标的 select 查询返回约 415 记录此错误的时候。

任何人都明白为什么此错误上来吗?

解决方法 1:

这是一个问题为您的 DBA 要解决,因为有大量的可能的原因。 有人需要看在警报日志和跟踪文件中检查 bdump 目录的诊断信息。

同时,如果你有要删除你的只有 415 记录应只需使用直 SQL:

DELETE FROM cust_table
WHERE cust_num in (SELECT cus_num           
                   FROM dob.cust_table 
                   GROUP BY cust_num HAVING COUNT(*)>1);  
赞助商