Oracle10g 为具有大量数据的oracle数据库添加默认值

Oracle10g 为具有大量数据的oracle数据库添加默认值,oracle10g,default-value,Oracle10g,Default Value,我正在尝试向一个记录超过900万条的表中添加一个新列 此问题是,列需要为默认值“N”。更新表时,数据库遇到填充临时数据的问题。而且,这需要花费大量的时间 我想知道是否有人知道如何更快或更好地实现这一点,以避免临时数据填充问题 数据库是Oracle10g。如果您可以移动到11g并且列不为空,Oracle有一个优化,其中默认值不需要存储在每一行中,因此您可以快速添加列。不幸的是,这听起来像是你被Oracle的一个去润滑版本卡住了,而这个版本是不可用的 最有可能的是,除了等待,你没有很多真正好的选择。

我正在尝试向一个记录超过900万条的表中添加一个新列

此问题是,列需要为默认值“N”。更新表时,数据库遇到填充临时数据的问题。而且,这需要花费大量的时间

我想知道是否有人知道如何更快或更好地实现这一点,以避免临时数据填充问题


数据库是Oracle10g。

如果您可以移动到11g并且列不为空,Oracle有一个优化,其中默认值不需要存储在每一行中,因此您可以快速添加列。不幸的是,这听起来像是你被Oracle的一个去润滑版本卡住了,而这个版本是不可用的

最有可能的是,除了等待,你没有很多真正好的选择。假设您在停机期间执行此操作,则使用新列创建新表、将旧表中的所有数据直接插入新表、重命名表以及将任何约束重新指向新表可能更有效。这是否比等待更新更有效取决于硬件和表,但插入可能比更新更有效。另一方面,对于不会创建大量迁移行的新单字符列,您最好等待更新,而不是进行此级别的工作-您需要测试和验证许多可能出错的事情,即确保您正确更新了所有约束