SQL 错误向表添加约束,ORA-01652 - 无法扩展临时段

标签 sql oracle large-data-volumes

我已经通过 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/

相关文章:

sql - 在 SQL 查询条件下添加重复行

database - 具有不同 SID 的 Oracle 导出数据库

oracle - 无法在 Oracle SQL Developer v19.0.1 中创建 PRIVATE TEMPORARY TABLE(错误 : ORA-00905)

hbase - 如何存储和查询非常大的数据集(超出关系数据库)

java - Java 中的 STXXL 等价物

mysql - 高效的 MySQL 模式,对巨大的数据集进行分区(7.300.000.000 行和大约 80 GB 的数据)

Java调度与SQL调度

java - 更快地批量加载嵌套数据

.net - Entity Framework 5 混合 Oracle 和 SQL Server

php - mysql - 产品属性选择