我正在尝试在我们的测试Oracle 12C R2环境中向现有大约30,000行的现有表添加一个新列,但是它已经运行了一个多小时,并完全锁定了SQL开发人员
这是我使用的基本语法。我没有指定任何默认值,因为不需要一个,默认情况下应为null。
ALTER TABLE "Schema"."Table" ADD "C_C6" VARCHAR2(8 BYTE)
我尝试查找这个问题,但是大多数情况似乎是指人们试图指定默认值的问题,而我不做。
我还暂时禁用我在运行Alter Tabt语句
之前在表上遇到的任何触发器有什么建议?
听起来像是您想要基于版本的重新定义,使您可以创建数据库的新版本,在旧版本中创建桌子的视图,重命名旧版本中的表格,在新版本中,将列添加到更名的表中,然后将数据从旧版本迁移到新版本。汤姆·凯特(Tom Kyte)在上面的链接上给出了完整的解释。唯一的停机时间是将餐桌命名为旧版本的几分钟。而且您可以完全控制您如何迁移数据,以免陷入困境,但是对于30,000行桌子,很可能是锁旋转CPU。