2009-12-02 47 views
2

我發現特定表上使用的分區會影響查詢性能,並希望從表中刪除分區。是否有捷徑可尋?有問題的表格有64個分區。根據一些初步調查,我提出了以下選項。有沒有更好的辦法?如何從Oracle表中刪除表分區?

  1. 將數據複製到另一個表,刪除所有分區,然後將數據
  2. 複製的數據複製回原始表到另一個表,刪除原始表,然後重命名新表和重建索引
  3. 使用MERGE PARTITION將所有分區合併爲一個分區

想法?

回答

2

就我個人而言,我認爲選項2的變體聽起來像是最好的方法。

  1. 創建新表的SELECT * FROM 舊錶
  2. 新表 (*)
  3. 重命名舊錶不同的東西
  4. 建立索引
  5. 重命名新表,舊錶名
  6. 將舊錶的所有外鍵約束從 切換到新表。另外傳輸任何補助,同義詞等
  7. 刪除舊錶慢時

(*)非分區表可能會需要從一個分區不同的索引。如果您特別關注索引名稱,則可以在步驟6之後使用ALTER INDEX ... RENAME TO ...語法。

此方法的優點是可以最大限度地減少停機時間(基本上是步驟3,4和5)。

+0

工作很好。感謝您的建議! – 2009-12-04 14:12:06