Ora-30036 Ora-06512 和 Ora-04088

Posted

技术标签:

【中文标题】Ora-30036 Ora-06512 和 Ora-04088【英文标题】:Ora-30036 Ora-06512 and Ora-04088 【发布时间】:2016-06-09 13:22:45 【问题描述】:

您好,我正在 oracle 中上传一个 6GB 的 csv 文件。我的表空间有 100GB 的容量,但我得到了错误。

ORA-30036:无法在撤消表空间“UNDOTBS1”中将段扩展 8。 ORA-06512:在“user.Trigger”,第 4 行。 ORA-04088 触发器执行期间出错。

我不知道它在这里显示 3Error 的错误是什么我现在必须做什么?

【问题讨论】:

【参考方案1】:

此错误表示您的 UNDO 表空间中的空间已用完。 UNDO 表空间用于跟踪数据的更改(删除、插入、更新等),以便 a) 如果您执行回滚,它们可以回滚,并且 b) 以便其他会话可以看到您之前的数据session 开始搞砸了。

您需要联系您的 DBA 并扩展该表空间,或者(但不推荐,特别是如果这是一个经常运行的进程)将事务分解为更小的块。

扩展表空间将是我的方式。

【讨论】:

但是我的表表空间不同。因此,如果我增加 UNDO 表空间,它会起作用吗?UNDO 表空间会带来什么触发错误。 是的,您的数据库对象将存在于您(或 DBA)为保存它们而专门创建的表空间中。必须创建两个与特定模式无关的表空间——它们是 UNDO 和 TEMP 表空间。我强烈建议你研究这些。 UNDO 表空间的大小需要调整为将要运行的最大事务,否则您最终会耗尽空间 - 这是您遇到的错误。 比如说,你尝试更新10000条记录,但是你的UNDO表空间只有9000行更改信息的空间;更新语句中的其他 1000 行会发生什么情况?显然,Oracle 无法继续进行更改,因为如果您要回滚,它怎么知道将这 1000 行回滚到什么位置?因此,它使整个操作失败。如果要更新这些行,则需要确保在 UNDO 中有足够的空间来保存所有 10,000 行的更改信息,以及任何其他活动事务的信息等。 所以目前我的 csv 文件为 6GB,我想插入 mytablespace 为 100GB 但我的 UNDO 表空间约为 1GB 。那么我应该增加多少 UNDO 表空间的大小。这是插入操作,现在我的表中没有任何内容。 你必须增加它才能看到;您最初可以使用 6GB,但增加更多也没有什么坏处(当然,未使用的空间是浪费的空间,但如果您的服务器有足够的可用空间,这可能不是这样的问题)。您还可以将其设置为自动扩展,以便它可以根据需要增长。这可能是好事也可能是坏事,因此根据您的情况,您可能需要暂时执行此操作以查看其增长的大小,然后恢复为固定大小。

以上是关于Ora-30036 Ora-06512 和 Ora-04088的主要内容,如果未能解决你的问题,请参考以下文章

ORA-30036: 无法按 8 扩展段解决办法

oracle 关于“ORA-30036”处理方法

ORA-01422:- ORA-06512:

ORA-01722:无效号码 ORA-06512:在“BWSTAGE.LOAD_CONTACT_PROCEDURE”,第 8 行 ORA-06512:在第 2 行

ORA-04091:表正在变异,触发器/函数可能看不到它,ORA-06512:,ORA-06512:在“SYS.DBMS_SQL”,第 1721 行

ORA-06550、PLS-00103、ORA-06512 函数