我正在尝试在我们的测试Oracle 12c R2环境中将一个新列添加到大约30,000行的现有表中,但它已经运行了一个多小时并完全锁定了SQL Developer
这是我使用的基本语法。我没有指定任何默认值,因为不需要一个默认值,默认情况下应为NULL。
ALTER TABLE "Schema"."Table" ADD "C_C6" VARCHAR2(8 BYTE)
我尝试查找这个问题,但大多数情况似乎都是指人们试图指定默认值的问题,我没有这样做。
我还在运行Alter Table语句之前暂时禁用了我在表上的任何触发器
有什么建议?
听起来你想要Edition-Based Redefinition,它允许你创建一个新版本的数据库,在旧版本中创建表格的视图,在旧版本中重命名表格,在新版本中将列添加到重命名的表格,以及然后将数据从旧版本迁移到新版本。 Tom Kyte在上面的链接中给出了完整的解释。唯一的停机时间是在旧版本中重命名表格几分钟。并且您可以完全控制迁移数据的方式,这样就不会让事情陷入困境,但对于30,000行表,很可能锁定了CPU。