ORA-14402: 更新分區關鍵字列將導致分區的更改

來源:互聯網
上載者:User

ORA-14402: 更新分區關鍵字列將導致分區的更改

預設情況下,Oracle的分區表對於分區欄位是不允許進行update操作的,如果有對分區欄位行進update,就會報錯——ORA-14402: 更新分區關鍵字列將導致分區的更改。這種情況可以通過開啟表的行移動來允許對分區欄位的update 操作:

alter table xxx enable row movement;

    之後就可以成功update 分區欄位,同時因為行的物理移動,導致rowid發生變化,對應列值的索引葉塊 會標記為刪除,插入新的葉塊,重定義完分區後,記得關閉行移動。

alter table xxx disable row movement;

下面三種情況需要開啟row movement
      1.更新Partition Key
      分區表某一行更新時,如果更新的是分區列,並且更新後的列值不屬於原來的這個分區,如果開啟了這個選項,就會把這行從這個分區中delete掉,並加到更新後所屬的分區。相當於一個隱式的delete+insert,但是不會觸發insert/delete觸發器。如果沒有開啟這個選項,就會在更新時報錯ORA-14402;
      這一操作產生影響的特殊之處在於這是個DML操作,是和online transaction密切相關。對於這樣一個UPDATE,實際上分為3步:先從原有分區將資料刪除;將原資料轉移到新分區上;更新資料。
      其影響就在於以下幾個方面:
一個UPDATE被分解為DELET、INSERT、UPDATE三個操作,增加了效能負擔。其中,DELETE的查詢條件與原UPDATE的查詢條件相同,新的UPDATE的查詢條件是基於INSERT產生的新的ROWID,相應的Redo Log、Undo Log會增加;
      如果Update語句還涉及到了Local Index的欄位的話,新、舊2個分區上的Local Index都要被更新。
      還有一點,Row Movement會和域索引(Domain Index)產生衝突:如果表上定義了域索引,開啟Row Movement就會失敗;反之亦然。

    2. Flaskback table to 某時間
        Flashback Table實際是通過Flashback Query將表中資料進行了一次刪除、插入操作,因此ROWID會發生變化
    3. Shrink Segment
        Shrink Segment能協助我們壓縮資料區段、整理資料片段、降低高水位,以提高效能、節省空間的。

    有必要說明一下,row movement並不是行遷移,最大的區別是行遷移的rowid是不變的,行遷移是update 行記錄時,資料區塊沒有足夠的空閑容納資料行,Oracle將此行移到其他資料區塊,同時保留此行的rowid不變,並在原資料區塊建一指標指向新的行位置。這種情況下,讀取一行資料就會訪問2個資料區塊,增加IO,導致效能下降。

如果直接建立主鍵,使用的global index,當某分區被drop後,主鍵會失效,

ALTER TABLE PHAECDA1.HCPSGLSINFOPZOW_NEW ADD CONSTRAINT PK_STAMP PRIMARY KEY(T_STAMP) tablespace xx;

改為 local index,但不包含分區段,報錯

ALTER TABLE PHAECDA1.HCPSGLSINFOPZOW_NEW ADD CONSTRAINT PK_STAMP PRIMARY KEY(T_STAMP) using index local tablespace  xxx;

ORA-14039: partitioning columns must form a subset of key columns of a UNIQUE

ORA-14039: 分區列必須構成 UNIQUE 索引的關鍵字列子集

Local index ,主鍵+分區鍵  作為新的主鍵,自動建立分區index ,index會按分區段Partition 分區到table的分區資料表空間

ALTER TABLE PHAECDA1.HCPSGLSINFOPZOW_NEW ADD CONSTRAINT PK_STAMP PRIMARY KEY(T_STAMP,CLDATE) USING INDEX LOCAL;

 先建立index ,再建立主鍵,

當然,主鍵也可直接作為分區段

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.