我已经通过 append
提示加载了这个包含数百万行的表。
现在我重新打开约束,我得到以下结果:
2012-03-23 01:08:53,065 错误 [SQL] [main]: 执行 SQL 时出错
:
alter table summarydata add constraint table_pk primary key (a, b, c, d, e, f)
java.sql.SQLException:ORA-30032:挂起(可恢复)语句已超时
ORA-01652: 无法将表空间 MY_TEMP_TABLESPACE 中的临时段扩展 128
是否有任何最佳实践可以避免这种情况?我正在添加更多数据文件,但为什么这会成为问题呢?
最佳答案
该错误与临时表空间有关,而不是与保存表和/或主键的数据表空间有关。您需要增加 MY_TEMP_TABLESPACE 的大小,以便它有足够的空间来进行比较,如 @Lamak 所示。
如果您不知道需要多少空间,您可以按照@DCookie所说打开AUTOEXTEND
,如果它已经打开(用于临时,而不是数据,表空间!),那么检查 MAXSIZE
设置并根据需要增加。在某些平台上,数据文件(或临时表空间,希望是临时文件)的最大大小受到限制,因此您可能需要添加额外的临时文件。
如果这是一项一次性任务,并且您不希望 temp 保持很大,您可以稍后缩小它,但您也可以选择:创建一个新的大型临时表空间;修改用户,使其使用该用户;建立约束;将用户修改回原来的temp区;删除新的大型临时表空间。
关于SQL 错误向表添加约束,ORA-01652 - 无法扩展临时段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9844508/