繁体   English   中英

Oracle 12c将列添加到表中而没有默认值会花费很长时间

[英]Oracle 12c Adding Column to table without default value taking really long

我正在尝试在测试的Oracle 12c R2环境中向现有约30,000行的表中添加新列,但是该列已经运行了一个多小时,并且完全锁定了SQL Developer。

这是我使用的基本语法。 我没有指定任何默认值,因为不需要一个默认值,默认情况下应为NULL。

ALTER TABLE "Schema"."Table" ADD "C_C6" VARCHAR2(8 BYTE)

我尝试查找此问题,但大多数情况下似乎是指人们试图指定默认值的问题,而我没有这样做。

在运行Alter Table语句之前,我还临时禁用了该表上的所有触发器

有什么建议么?

听起来像您想要基于版本的重定义 ,它允许您创建数据库的新版本,在旧版本中创建表的视图,在旧版本中重命名表,然后在新版本中将列添加到重命名的表,然后将数据从旧版本迁移到新版本。 汤姆·凯特(Tom Kyte)在上面的链接中提供了完整的解释。 唯一的停机时间是几分钟,您可以在旧版本中重命名该表。 而且,您可以完全控制数据的迁移方式,因此不会陷入麻烦,但是对于30,000行表而言,锁很可能使CPU旋转。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM