| 物件 | 功能 | 關鍵屬性 |
| Resource Consumer Group | 同類資源需求使用者群組 | CPU_P1~P8, PARALLEL_DEGREE_LIMIT_P1, UNDO_POOL |
| Resource Plan | 資源分配方案(含指令集) | ACTIVE_SESS_POOL_P1, QUEUEING_P1, MAX_EST_EXEC_TIME |
| Resource Plan Directive | 將 Plan 連結 Group/Subplan 並分配資源 | MGMT_P1~P8 (百分比), SWITCH_TIME, SWITCH_GROUP |
典型配置範例:OLTP + 批次報表隔離
-- 1. 建立消費者群組
BEGIN
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
consumer_group => 'OLTP_GRP', comment => '線上交易優先');
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
consumer_group => 'BATCH_GRP', comment => '批次報表低優先');
END;
/
-- 2. 建立計畫與指令
BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN(plan => 'DAY_PLAN', comment => '白天混合負載');
-- OLTP 獲 70% CPU 第一優先級
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
plan => 'DAY_PLAN', group_or_subplan => 'OLTP_GRP',
mgmt_p1 => 70, switch_time => 60, switch_group => 'BATCH_GRP');
-- 批次獲 30% CPU,超時 60 秒降級
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
plan => 'DAY_PLAN', group_or_subplan => 'BATCH_GRP',
mgmt_p1 => 30);
-- 其他/維護
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
plan => 'DAY_PLAN', group_or_subplan => 'OTHER_GROUPS',
mgmt_p1 => 10);
END;
/
-- 3. 驗證並啟用
EXEC DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA;
EXEC DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA;
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'DAY_PLAN';
映射使用者至群組
-- 登入觸發器自動映射
CREATE OR REPLACE TRIGGER set_res_group_after_logon
AFTER LOGON ON DATABASE
BEGIN
IF USER IN ('OLTP_USER1','OLTP_USER2') THEN
DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
DBMS_RESOURCE_MANAGER.ORACLE_USER, USER, 'OLTP_GRP');
ELSIF USER IN ('BATCH_USER') THEN
DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
DBMS_RESOURCE_MANAGER.ORACLE_USER, USER, 'BATCH_GRP');
END IF;
END;
四、 總結
- OS 層建立「記憶體充足、I/O 無瓶頸、CPU 均衡」的基礎環境
- 落實安全稽核清單,建立自動化巡檢機制
- 啟用 Resource Manager,以 Consumer Group/Plan/Directive 三層模型實現業務級資源隔離
- 定期檢視
V$RSRC_CONSUMER_GROUP、V$RSRC_PLAN 驗證資源分配效果
OS 與資料庫資源管理雙管齊下,才能在混合負載環境下保障核心業務 SLA。
- 上一篇文章: Oracle 區塊效能優化:動態擴展、HWM、統計資訊與區塊大小四大支柱
- 下一篇文章: Oracle 11g 閃回資料歸檔:Total Recall 完整部署與實戰驗證
Copyright ©
程式碼之家 All Rights Reserved