Oracle 11g 線上重定義

來源:互聯網
上載者:User

在Oracle9i出現之前,你只能通過MOVE或匯出和匯入的方式來進行表的重定義,因此表重已定義流程可能相當漫長或者說是一個離線過程,在此期間應用程式對該表的操作將失敗。除了這個,如果用exp,我們也不能保證exp的時候該表的資料沒有改變(除非單使用者),而imp更是一個漫長的過程。為瞭解決這個問題,Oracle9i在其DBMS_REDEFINITION軟體包中引入了線上重定義功能。這個特性對24*7的資料庫系統來說非常重要,使用這個技術DBA可以在保持表允許DML語句的情況下修改結構,比如添加列、移動表到其他資料表空間、處理表的片段等,當然了對於表的片段處理,在10g以後,可以考慮使用shrink操作來實現,關於shrink在這裡不做討論。

線上重定義具有以下功能:

 


(1)修改表的儲存參數;

(2)可以將錶轉移到其他資料表空間;

(3)在表上增加、修改或刪除一列或是多列;

(4)增加並行查詢選項;

(5)增加分區支援;

(6)修改分區結構;

(7)重建表以減少片段;

(8)將堆表改為索引組織表或相反的操作;

 


線上重定義的方法

 


1.基於主鍵

2.基於ROWID。ROWID的方式不能用於索引組織表,而且重定義後會存在隱藏列M_ROW$$。

預設採用主鍵的方式。

 


線上重定義的一些限制

 


1.要求原始表和中間表在同一個方案下;

2.要求有2倍甚至是多於2倍的資料表空間空間;

3.如果使用主鍵重定義的方式,原始表上要有主鍵;

 

 

 

對於線上重定義的步驟,這裡不再具體說明,我們通過一個實驗來示範一下,下面是一個把普通錶轉換成分區表線上重定義的例子

 


一、首先建立使用者tj,並授予能夠完成線上重定義的許可權和角色

SQL> create user tj identified by tj

  2  default tablespace users

  3  temporary tablespace temp

  4  quota unlimited on users;

User created.

 


SQL> GRANT CREATE SESSION, CREATE ANY TABLE,ALTER ANY TABLE,

  2        DROP ANY TABLE, LOCK ANY TABLE  ,SELECT ANY TABLE,

  3        CREATE ANY INDEX,CREATE ANY TRIGGER

  4  TO TJ;

Grant succeeded.

 


SQL> GRANT EXECUTE_CATALOG_ROLE TO TJ;

Grant succeeded.

  • 1
  • 2
  • 3
  • 4
  • 5
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.