Oracle 12c向表中添加列没有默认值需要很长时间

问题描述 投票:0回答:1

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

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

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

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

我还在运行Alter Table语句之前暂时禁用了我在表上的任何触发器

有什么建议?

sql oracle oracle12c alter-table
1个回答
0
投票

听起来你想要Edition-Based Redefinition,它允许你创建一个新版本的数据库,在旧版本中创建表格的视图,在旧版本中重命名表格,在新版本中将列添加到重命名的表格,以及然后将数据从旧版本迁移到新版本。 Tom Kyte在上面的链接中给出了完整的解释。唯一的停机时间是在旧版本中重命名表格几分钟。并且您可以完全控制迁移数据的方式,这样就不会让事情陷入困境,但对于30,000行表,很可能锁定了CPU。

© www.soinside.com 2019 - 2024. All rights reserved.