突然发生PL / SQL错误

时间:2018-06-08 17:39:24

标签: oracle plsql dml

我正在使用TOAD开发PL / SQL脚本。在开发的这一点上,我正在调试它。这包括:在开始/结束中包装一个部分,F5运行它,接收错误信息,修复问题,重复。

突然之间,我无法接受

  ORA-00604: error occurred at recursive SQL level 2
  ORA-01654: unable to extend index SYS.I_OBJ5 by 128 in tablespace SYSTEM

该脚本以我的登录模式中的简单2字段表的drop table / create table指令集开始。在这个开始发生之后,我将我重新运行的部分缩小到一行:drop table < tblName >

在尝试缩小范围时,我终于进入了TOAD模式浏览器,右键单击了表格,并从上下文菜单中选择了“删除表格” - 结果相同。

我昨天必须经常发表这样的声明120次,没有这个行为给我带来任何麻烦。现在?不会发生!我真的很难过。所有这些运行是否可能加载一些现已满的区域?此脚本的一部分将打开文件系统文件。我不知道我必须关闭它们,然后我遇到“`这个动作会导致'打开太多文件'(每次迭代运行再打开一次)。我是否通过删除并重新创建此表来完成类似的操作这么多次?

1 个答案:

答案 0 :(得分:0)

我同意@Peter M,很可能你的SYSTEM表空间已满。

错误消息非常清楚地表明:unable to extend index ... in tablespace SYSTEM意味着Oracle在尝试使索引更大时耗尽了空间。 Oracle将表空间SYSTEM用于内部目的,例如表和列的列表。因此,它非常重要,通常由DBA监督,并保持清洁其他对象,如开发人员表。模式名称SYS也指向了这个方向。

另一个提示是recursive SQL:Oracle不仅运行你的SQL(如CREATE TABLE),而且有时需要做一些内务处理,比如更新表的列表,这也是由SQL完成的。第二种口味叫做recursive

因此我猜你的表不会导致SYSTEM表空间溢出,但是会有很多变化。

如果这发生在我的工作地点,我现在接到DBA的友好电话,询问发生了什么......