Oracle 12.2 新特性:在線的修改數據表為分區表
眾所周知,分區技術是Oracle應用最為廣泛的一個選件,並且曆史悠久,然而在過去的版本中,如果我們要將一個現有的數據表轉換為分區表,則是相當複雜的一個過程,而在 12.2 版本中,這個過程被簡化為一個在線的操作。
請看以下Demo SQL語句:
CREATE TABLE sales
( order_num NUMBER,
order_name VARCHAR2(128),
region VARCHAR2(10));
insert into sales (1,'YHEM','BEIJING');
insert into sales (2,'ENMOTECH','SHENZHEN');
insert into sales (3,'YHEM','SHANGHAI');
ALTER TABLE sales MODIFY
PARTITION BY LIST (region)
(partition p1 values ('BEIJING'),
partition p2 values ('SHENZHEN'),
partition p3 values ('SHANGHAI'),
partition p4 values (DEFAULT)) ONLINE;
在Modify修改表結構時,增加了ONLINE語句,可以直接將原有的數據表修改為分區結構。不會影響現有業務的運行。
在Live SQL站點運行一下測試語句( https://livesql.oracle.com ),可以看到順利的完成了分區定義。事實上這個功能已經非常健壯:
那麼Oracle在後台是如何完成這個DDL的重定義過程呢?
如果通過10046進行跟蹤,可以發現這是一個非常複雜的內部遞歸過程,Oracle會建立一個日誌表記錄變更,然後通過Bulk Move批量遷移原有數據,最後增量應用變化數據,所以當然,你會發現這期間需要兩倍的存儲空間:
10046 的跟蹤日誌,揭示了這一過程,以下是跟蹤日誌中一個映射表的建立(感興趣的同學可以從10046中找到很多原理性知識):
一個簡單的操作,後台的遞歸執行高達2500次,大家可以想象Oracle這艘航空母艦有多麼的龐大:
體驗12.2,學習不止步!
文章轉自數據和雲公眾號,原文鏈接
最後更新:2017-07-18 10:33:26