在對很多客戶的oracle資料庫做優化的時候發現, 很多系統都有一些大表沒有做分區, 導緻性能不佳和維護不便.
下面介紹4種普通表改分區表的方法, 供參考:
方法1:
建立分區表, 然後insert select; 或者在建立新分區表的同時插入(CTAS ,create table as select). 完成後做兩次rename table操作.
方法2:
線上重定義, 使用DBMS_REDEFINITION, 步驟有點複雜 ,網上有很多介紹該方法的文章, 可以百度一下.
方法3:
建立隻有一個分區的分區表, 用exchange partition将原表變成分區表後,再split partition.
方法4:
适用12.2+版本, 可以直接通過alter table xxx modify 指令, 将表直接改成分區表, 支援online不停業務.
推薦使用方法3和4, 符合版本要求就用4. 其他幾個方法版本8.x以上都支援.
上面隻是簡單介紹了方法, 具體還有很多細節, 包括global index/local index的選擇, 如何用最短時間完成,減少對業務的影響等. 多測試,多比較,實踐出真知.
另外, 分區字段和分區類型的選擇, 也是非常重要的, 需要結合業務好好研究再做決定. oracle的分區是一個很好的功能, 以後有機會可以作為一個教育訓練技術專題給大家分享.
如果大家還有更好的方法, 請在留言區留下您的建議, 多謝!
大表操作有風險, 祝一帆風順!