我正在使用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次,没有这个行为给我带来任何麻烦。现在?不会发生!我真的很难过。所有这些运行是否可能加载一些现已满的区域?此脚本的一部分将打开文件系统文件。我不知道我必须关闭它们,然后我遇到“`这个动作会导致'打开太多文件'(每次迭代运行再打开一次)。我是否通过删除并重新创建此表来完成类似的操作这么多次?
答案 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的友好电话,询问发生了什么......