首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle BasicFile 遷移至 SecureFile 完整方案:分區交換 vs 在線重定義實戰比較

     編輯:Oracle 資料庫基礎

遷移場景

數據倉庫/BI 環境大量使用 LOB 儲存 XML 商務文檔、醫療影像。需將既有 BasicFile LOB 表遷移至 SecureFile 以獲得壓縮、去重、加密、快取優勢。

環境準備:分區表結構對齊

建立來源表 TRBTKT.TICKETS (BasicFile) 與目標表 TRBTKT.SECURE_TICKETS (SecureFile),均按 STATUS 列表分區 (OPEN/PENDING/CLOSED/OTHER)。目標表各分區針對 LOB 獨立設定壓縮/去重策略:

  • OPEN:文檔保留重複/無壓縮,影像保留重複/壓縮
  • PENDING:文檔保留重複/無壓縮,影像去重/壓縮
  • CLOSED/OTHER:文檔與影像均去重/高壓縮

使用 PL/SQL 套件 PKG_SECUREFILES.ADD_TROUBLE_TICKET 載入測試資料,並收集優化器統計資訊。

兩大遷移方案深度比較

方案 1:分區交換載入 (Partition Exchange Load, PEL)

原理:建立非分區暫存表,結構與目標分區完全一致 → 載入資料 → ALTER TABLE ... EXCHANGE PARTITION 交換。

優點:

  • 本地索引自動維護
  • 支援平行執行
  • 可重複執行填充各分區

缺點:目標分區交換期間必須離線,影響可用性。

方案 2:在線重定義

原理:使用 DBMS_REDEFINITION 套件,在源表與目標表之間建立同步機制,完成後在資料字典中原子切換物件定義。

優點:

  • 全程在線,目標表無需離線
  • 支援表級與分區級操作
  • 可平行處理多個分區
  • 完成後 PL/SQL 物件引用自動生效,無需修改代碼

Oracle 官方推薦,生產環境首選。

關鍵提醒

遷移完成後,LOB 無法降級回 BasicFile,請務必先在測試環境驗證應用相容性。

SecureFile 中繼資料管理:數據字典視圖與 DBMS_SPACE

1. 關鍵數據字典視圖 (11g 增強)

2. 空間使用率分析:DBMS_SPACE.SPACE_USAGE

需啟用 ASSM (自動段空間管理)。BasicFile 僅報告 Full/Unformatted Blocks;SecureFile 提供 Used/Expired/Unexpired Blocks 詳細分析。

-- BasicFile 範例輸出
Full Blocks: 123 KB: .96
Unformatted Blocks: 379 KB: 2.96

-- SecureFile 範例輸出
Segment Blocks: 1024 KB: 8192
Used Blocks: 124 KB: 992
Expired Blocks: 882 KB: 7056
Unexpired Blocks: 0 KB: 0

Expired Blocks 表示已過保留期可重用空間,Unexpired 為保留期內不可覆寫空間,反映 SecureFile 進階空間管理能力。

動態調整 SecureFile 屬性

使用 ALTER TABLE ... MODIFY LOB 或 MODIFY PARTITION ... LOB 即時調整,僅影響新建/修改的 LOB,既有資料不自動重組。

-- 表級關閉壓縮
ALTER TABLE trbtkt.tickets MODIFY LOB(document) (NOCOMPRESS);

-- 表級關閉去重
ALTER TABLE trbtkt.tickets MODIFY LOB(scrnimg) (KEEP_DUPLICATES);

-- 分區級調整:PENDING 分區影像高壓縮
ALTER TABLE trbtkt.tickets MODIFY PARTITION sts_pending LOB(scrnimg) (COMPRESS HIGH);

-- 分區級調整:PENDING 分區文檔啟用去重
ALTER TABLE trbtkt.tickets MODIFY PARTITION sts_pending LOB(document) (DEDUPLICATE);

調整後可查詢 DBA_LOB_PARTITIONS 驗證生效狀態。

總結建議

  1. 生產環境優先採用 在線重定義,零停機遷移
  2. 規劃分區級壓縮/去重策略,依資料存取頻率與壽命週期差異化配置
  3. 善用 DBA_LOB_PARTITIONS 監控實際儲存屬性,DBMS_SPACE 追蹤空間效益
  4. 屬性調整僅對新資料生效,歷史資料需重組時可配合 ALTER TABLE ... MOVE LOB 或再次重定義
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
視圖用途關鍵欄位
DBA_SEGMENTS段資訊SEGMENT_SUBTYPE (BASICFILE/SECUREFILE)
DBA_LOBSLOB 定義SECUREFILE, COMPRESSION, DEDUPLICATION, ENCRYPT, CACHE
DBA_PART_LOBS分區 LOB 預設值DEF_SECUREFILE, DEF_COMPRESS, DEF_DEDUPLICATE
DBA_LOB_PARTITIONS分區層級實際設定COMPRESSION, DEDUPLICATION, SECUREFILE