文档解释
ORA-39278: Cannot alter table with segments to segment creation deferred.
Cause: DBMS_METADATA_DIFF was comparing two tables, the first with allocated segments, the second with deferred segments. There is no SQL ALTER statement to change a table which already has segments to segment creation deferred.
Action: The difference cannot be eliminated with an SQL ALTER statement.
ORA-39278: 不能在延迟创建分段的情况下改变表。
错误说明 :
ORA-39278是一个在其表中变更分段创建被延迟的情况下的Oracle数据库中的错误消息。当发生表更改或添加分区操作时,如果被原来定义的分段被延迟创建,就会抛出ORA-39278错误信息。此错误消息表明,尚未执行实际地操作,也就是说表或分区变更操作尚未发生。
常见案例
活动:建立一个表,定义分段,并将分段创建延迟到下一个维护窗口。
SQL> CREATE TABLE example_tab (id NUMBER, location VARCHAR2 (10), creation_time DATE)
SEGMENT CREATION DEFERRED;
活动:在表定义的基础上,添加一个新的分区
SQL> ALTER TABLE example_tab ADD PARTITION p_01 VALUES LESS THAN (20) TABLESPACE ts_01 SEGMENT CREATION IMMEDIATE;
错误:将抛出ORA-39278
SQL> ORA-39278:将不能改变具有延迟分段创建的表
解决方法:
解决ORA-39278错误的最佳方式是执行ALLOCATE EXTENT指令来立即分配分段。只有当这些分段分配(或不分配)时,表更改操作(或者添加分区的操作)才能够完全正确执行。
SQL> ALTER TABLE example_tab ALLOCATE EXTENT;
此操作将表更改和添加分区的更改有效地立即完成,以解决ORA-39278错误信息。