Oracle 12c将列添加到表中,而无需默认值花费很长时间



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

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

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

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

我还暂时禁用我在运行Alter Tabt语句

之前在表上遇到的任何触发器

有什么建议?

听起来像是您想要基于版本的重新定义,使您可以创建数据库的新版本,在旧版本中创建桌子的视图,重命名旧版本中的表格,在新版本中,将列添加到更名的表中,然后将数据从旧版本迁移到新版本。汤姆·凯特(Tom Kyte)在上面的链接上给出了完整的解释。唯一的停机时间是将餐桌命名为旧版本的几分钟。而且您可以完全控制您如何迁移数据,以免陷入困境,但是对于30,000行桌子,很可能是锁旋转CPU。

最新更新