Oracle 基於 dbms_redefinition 線上重定義表

來源:互聯網
上載者:User

Oracle 基於 dbms_redefinition 線上重定義表

Oracle 支援線上重定義表,也就是說我們可以在修改表結構(DDL)的同時進行相關的DQL、DML操作,使得前端的DML根本感覺不到表結構實際上已經發生了變化,對於使用者而言是完全透明的。當然線上重定義期間,前端效能會稍微有所下降。Oracle提供的重定義包dbms_redefinition即是用與完成此操作。其實質是Oracle使用了智能物化視圖及物化視圖日誌的方式。在對象結構重組期間,表現為一個本機物件的複製,重組期間發生的任何變化都會被重新整理到最新。

--------------------------------------------------------------------------------

Linux-6-64下安裝Oracle 12C筆記

在CentOS 6.4下安裝Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虛擬機器中安裝步驟

Debian 下 安裝 Oracle 11g XE R2

--------------------------------------------------------------------------------

1、線上重定義表的主要功能:

修改表或簇的儲存參數

將表移動到相同或不同schema下不同的tablespace(如果不要求表始終可用的話,也可以直接使用alter table move 實現)

為表添加,修改或刪除列

為表添加或刪除分區,改變分區結構

改變物化視圖日誌或者Streams Advanced Queuing queue 表結構

增加並行查詢支援

重建表以減少片段

將堆表變為索引組織表或相反

2、圖示線上重定義

下面的圖示便於理解是如何進行線上重定義,其本質是基於基表的一個快照

3、線上重定義的步驟

a、選擇線上重定義的方式,基於鍵(主鍵或唯一鍵)還是rowid(無主鍵或唯一鍵的情形)

b、校正表能否被線上重定義,使用過程CAN_REDEF_TABLE

c、建立用於線上重定義的暫存資料表(該暫存資料表使用新的表結構,即添加刪除列,列長度變化,儲存屬性變化等)

d、如果重定義的為分區表且使用rowid方式,應該為暫存資料表開啟行移動(ALTER TABLE ... ENABLE ROW MOVEMENT;)

e、對於大型表的線上重定義可以通過啟用並行以提高效能(此步驟可選)

ALTER SESSION FORCE PARALLEL DML PARALLEL degree-of-parallelism;

ALTER SESSION FORCE PARALLEL QUERY PARALLEL degree-of-parallelism;

f、調用過程start_redef_table啟動線上重定義,如果啟動失敗,應調用ABORT_REDEF_TABLE先終止尋找原因後再次啟動

g、從被重定義的表複製依賴對象到暫存資料表(triggers, indexes, materialized view logs, grants, and constraints)及統計資訊到暫存資料表

h、同步被重定義的表到暫存資料表(調用過程sync_interim_table,此步可選)

i、調用過程FINISH_REDEF_TABLE完成表的線上重訂義

j、刪除暫存資料表

更多詳情見請繼續閱讀下一頁的精彩內容:

  • 1
  • 2
  • 下一頁

相關文章

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.