派生查询抛出错误ORA-00604:在递归SQL级别1发生错误

时间:2015-03-03 13:13:52

标签: sql database oracle readonly temp

我的内部子查询是正常工作,它从以下查询中的line 3开始。 但是当我在它上面进行查询时,它显示错误ORA-00604:在递归SQL级别1发生错误

  SELECT PU , CA , COUNT(CA) CNT FROM
      (
        SELECT CASE
        WHEN DP.STRVAL = 'A' then 'A1' 
        ELSE 'OTHERS' END PU,
        (CASE WHEN UPPER(CP.STRVAL) = 'YES' THEN 'YES' ELSE 'NO' END) CA 
        FROM DM.MAP AP
        LEFT OUTER JOIN DM.MAC BP ON AP.ISSUEID  = BP.ISSUE AND BP.CF = 'RD'
        LEFT OUTER JOIN DM.MAC CP ON AP.ISSUEID  = CP.ISSUE AND CP.CF = 'CA'
        LEFT OUTER JOIN DM.MAC DP ON AP.ISSUEID  = DP.ISSUE AND DP.CF = 'PU'    
      ) AB 
    GROUP BY PU, CA

上面的查询是在第一个左连接的行中抛出错误

ORA-00604: error occurred at recursive SQL level 1
ORA-16000: database open for read-only access
00604. 00000 -  "error occurred at recursive SQL level %s"
*Cause:    An error occurred while processing a recursive SQL statement
           (a statement applying to internal dictionary tables).
*Action:   If the situation described in the next error on the stack
           can be corrected, do so; otherwise contact Oracle Support.
Error at Line: 15 Column: 19

我没有看到此查询的任何问题,但不确定其抛出错误的原因。

1 个答案:

答案 0 :(得分:3)

可能的问题是:

  

ORA-16000:数据库打开以进行只读访问

当您应用 JOIN GROUP BY 时,可能需要一些 TEMP 空间。并且您没有权限访问临时空间。

检查您是否有临时表空间。

此外,

  

DM.MAP

您可以通过以DM用户身份登录来尝试查询吗?

如果它是本地管理的临时表空间,那么使用适当的权限,应该没有问题。但是,我有这种强烈的感觉,你没有所需的特权。

我的建议,请咨询您的DBA,您的DBA可能会解决一些重要问题。