ORA-39278: Cannot alter table with segments to segment creation deferred.

文档解释

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错误信息。

你可能感兴趣的