簡體   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