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

DBMS_STATS 統計資訊管理全攻略:分析、匯出備份、刪除與匯入還原操作指南

     編輯:Oracle 資料庫基礎

建立統計資訊備份表

BEGIN
  DBMS_STATS.CREATE_STAT_TABLE(
    ownname => 'TEST',
    stattab => 'STAT_TABLE'
  );
END;
/

收集表統計資訊

BEGIN
  DBMS_STATS.GATHER_TABLE_STATS(
    ownname => 'TEST',
    tabname => 'A'
  );
END;
/

匯出統計資訊至備份表

BEGIN
  DBMS_STATS.EXPORT_TABLE_STATS(
    ownname => 'TEST',
    tabname => 'A',
    stattab => 'STAT_TABLE'
  );
END;
/

驗證:SELECT COUNT(*) FROM STAT_TABLE; 返回 1 筆記錄。

DBMS_STATS 完整功能對照表

分類程序/函數功能說明
匯出EXPORT_COLUMN_STATS匯出欄位統計
EXPORT_INDEX_STATS匯出索引統計
EXPORT_SYSTEM_STATS匯出系統統計
EXPORT_TABLE_STATS匯出表統計
EXPORT_SCHEMA_STATS匯出 Schema 統計
EXPORT_DATABASE_STATS匯出資料庫統計
匯入IMPORT_COLUMN_STATS匯入欄位統計
IMPORT_INDEX_STATS匯入索引統計
IMPORT_SYSTEM_STATS匯入系統統計
IMPORT_TABLE_STATS匯入表統計
IMPORT_SCHEMA_STATS匯入 Schema 統計
IMPORT_DATABASE_STATS匯入資料庫統計
收集/分析GATHER_INDEX_STATS分析索引
GATHER_TABLE_STATS分析表 (CASCADE=TRUE 含欄位/索引)
GATHER_SCHEMA_STATS分析 Schema
GATHER_DATABASE_STATS分析資料庫
GATHER_SYSTEM_STATS分析系統統計
刪除DELETE_TABLE_STATS刪除表統計

統計資訊還原演練

  1. 刪除現有統計:
    BEGIN
      DBMS_STATS.DELETE_TABLE_STATS(ownname => 'TEST', tabname => 'A');
    END;
    /
    
  2. 從備份表匯入還原:
    BEGIN
      DBMS_STATS.IMPORT_TABLE_STATS(
        ownname => 'TEST',
        tabname => 'A',
        stattab => 'STAT_TABLE'
      );
    END;
    /
    

實務應用場景與建議

  • 變更管理: 重大統計收集前必先匯出備份,效能退化時秒級回滾。
  • 跨環境同步: 將生產庫統計匯出後匯入測試庫,模擬真實執行計畫。
  • 定時任務: 搭配 DBMS_SCHEDULER 定期收集與備份統計。
  • 分區表: 使用 GATHER_TABLE_STATS 的 GRANULARITY 參數控制分區/全域統計收集層級。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved