Oracle:ORA-00604: 递归 SQL 级别 1 出现错误

java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误

ORA-01653: 表 SYS.AUD$ 无法通过 8192 (在表空间 SYSTEM 中) 扩展

ORA-02002: 写入审计线索时出错

ORA-00604: 递归 SQL 级别 1 出现错误

ORA-01653: 表 SYS.AUD$ 无法通过 8192 (在表空间 SYSTEM 中) 扩展

 

使用DBA登录:

查询SQL:

SELECT UPPER(F.TABLESPACE_NAME) "表空间名",

D.TOT_GROOTTE_MB "表空间大小(M)",

D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",

TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') "使用比",

F.TOTAL_BYTES "空闲空间(M)",

F.MAX_BYTES "最大块(M)"

FROM (SELECT TABLESPACE_NAME,

ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,

ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES

FROM SYS.DBA_FREE_SPACE

GROUP BY TABLESPACE_NAME) F,

(SELECT DD.TABLESPACE_NAME,

ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB

FROM SYS.DBA_DATA_FILES DD

GROUP BY DD.TABLESPACE_NAME) D

WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME

ORDER BY 4 DESC;

 

查看报错的表空间容量

表名                 表空间大小(M) 已使用空间(M) 使用比      空闲空间(M)  最大块(M)
-------------------- ------------- ------------- ------- ----------- ----------
SYSTEM                    33267.98      32268.67   99.90       1.31        0.97
SDE                       32767.98      32711.67   99.83       56.31          1
SYSAUX                      916.69        866.31   94.50       50.38      41.69
USERS                            5          1.37   27.40        3.63       3.63
UNDOTBS1                      1570        134.25    8.55     1435.75       1426

解决

1、为表空间增加自动扩展

SQL> alter database datafile 'E:\app\Administrator\oradata\webdb\system01.dbf' AUTOEXTEND ON NEXT 50
M MAXSIZE UNLIMITED;

数据库已更改。

此方法在此是行不通的,因为SYSTEM的表空间已经到达了极限值,不能通过增长的方式改变。

2、为SYSTEM表空间增加一个数据文件SYSTEM02.DBF

SQL> ALTER TABLESPACE "SYSTEM" ADD DATAFILE 'E:\APP\ADMINISTRATOR\ORADATA\WEBDB\SYSTEM02.DBF' SIZE 5
00M AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED;

表空间已更改。

问题解决.

查看表空间是否具有自动扩展的能力的SQL
SELECT T.TABLESPACE_NAME,D.FILE_NAME,
D.AUTOEXTENSIBLE,D.BYTES,D.MAXBYTES,D.STATUS
FROM DBA_TABLESPACES T,DBA_DATA_FILES D
WHERE T.TABLESPACE_NAME =D.TABLESPACE_NAME
ORDER BY TABLESPACE_NAME,FILE_NAME;

这次问题是由于数据组开发人员将一些空间数据导入SYSTEM表空间所致。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ora-00604 错误表示在 SQL 语句执行过程中出现递归级别为 1 的错误。这可能是由于存在循环引用或递归触发器导致的。建议检查 SQL 语句并确保不存在循环引用,或者在触发器中加入更多的限制条件。 ### 回答2: ORA-00604Oracle数据库的一个错误代码,表示在执行SQL语句时发生了错误。它通常伴随着ORA-00942(表或视图不存在)或ORA-01031(无法分配许可)这样的错误一起出现。 更具体地说,ORA-00604: 递归 SQL 级别1是指在执行一个SQL语句时,Oracle数据库遇到了一个递归的情况,这通常是由于错误SQL语句导致的。递归是指一个SQL语句对自己进行了调用,且没有正确地终止。这种情况可能会导致数据库崩溃或无法正常工作,需要及时处理。 解决这种问题的方法有很多,以下是一些常见的方法: 1. 检查SQL语句,确保它没有死循环或递归调用自身的情况。 2. 检查是否有视图、触发器或存储过程等对象存在递归的情况,如果存在,需要进行修改或删除。 3. 检查数据库的权限设置,确保执行SQL语句的用户有足够的权限。 4. 尝试使用ALTER SYSTEM KILL SESSION命令结束占用系统资源的会话。 5. 使用OEM(Oracle Enterprise Manager)等管理工具分析数据库性能问题,找到导致ORA-00604错误的根本原因。 总之,ORA-00604: 递归 SQL 级别1是一种常见但严重的错误,需要及时处理。通过对SQL语句的检查、对数据库对象的审查以及性能分析等方法,可以有效地解决这个问题。同时,建议定期备份数据库,以防数据丢失。 ### 回答3: ORA-00604Oracle数据库返回给您的常见错误消息之一。它指示在执行SQL语句时,遇到了递归SQL级别1,即递归太深而导致错误。可能会看到错误消息类似于: ORA-00604: error occurred at recursive SQL level 1 ORA-01000: maximum open cursors exceeded 这个错误消息涉及到Oracle数据库递归查询机制。简单来说,如果您执行的SQL语句包含一个递归查询或使用了“WITH RECURSIVE”语法,那么它可能会从一个查询生成另一个查询,然后再次生成另一个查询,如此循环,直到达到递归查询的最大深度。当递归深度超过Oracle数据库的限制时,就会出现ORA-00604错误。 此错误通常与打开游标过多有关。游标是指向数据库查询的指针。如果处理数据库查询的游标太多,那么就会发生资源耗尽的情况。 解决ORA-00604错误的方法包括: 1. 修改SQL语句,尽可能减少递归查询的深度和游标数量; 2. 如果可能的话,考虑使用非递归查询替换递归查询; 3. 增加数据库的资源,例如内存、CPU或磁盘空间等; 4. 分析当前系统负载,如果系统负载过高,则应该优化数据库服务器配置。 总之,ORA-00604错误是常见的数据库错误之一,其解决方法需要综合分析具体情况,进行不同方面的优化和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值