使用Oracle Instance Caging技術
前言:
當多個Instance運行在同一台伺服器上時,為了避免Instance間的相互影響,從oracle 11g r2開始推出了Instance Caging的概念。Instance Caging能夠限制資料庫Instance使用的CPU資源。使用Instance Caging,需要設定cpu_count和resource_manger_plan兩個參數。是對CPU資源使用的一個簡單管理方法。
Step 1、安裝Oracle 11g r2
Step 2、下載解壓縮並開啟SQL Developer連線DB
安裝Oracle完成後,還必須再下載Oracle 管理工具,我們以SQL Developer 19.2.1為例。
連結:
https://www.oracle.com/tw/tools/downloads/sqldev-v192-downloads.html
Step3、開始設定Instance Caging
首先,先查看目前的資源計畫(Resource Plan)
指令:select plan FROM dba_rsrc_plans;
再打指令查看CPU的個數
指令:select value from v$osstat where stat_name = 'NUM_CPUS';
開啟Instance Caging,需要設定二個參數
-- 依照上述查詢到CPU的個數填入下方的cpu_count參數
說明:參數CPU_COUNT指定了Oracle實例可以同時使用的CPU的數量,資料庫的部分功能配置依賴於CPU_COUNT參數,比如查詢優化器,並行查詢和資源管理器。
alter system set cpu_count = 4;
-- 如果没有特定的資源管理需求,最簡單的解決方案是使用預設計畫
alter system set resource_manager_plan = 'default_plan';
通常有兩種方法來設置Instance Caging:
1.Partitioning:在這種方法中,所有實例的CPU_COUNT的總和小於或等於系統的CPU數目,實例之間互不干擾。
2.Over-provisioning:在這種方法中, 所有實例的CPU_COUNT的總和超過系統的CPU數目,實例的性能會相互影響。
Step4、監控 Instance Caging
顯示資源管理器的限制效果
指令:
-- CONSUMED_CPU_TIME是使用者組消耗的CPU時間的毫秒數,而CPU_WAIT_TIME是由於資源管理器限制而等待CPU的時間
SELECT name, consumed_cpu_time, cpu_wait_time
FROM v$rsrc_consumer_group;
ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';
SET LINESIZE 100
SELECT begin_time, consumer_group_name, cpu_consumed_time, cpu_wait_time
FROM v$rsrcmgrmetric_history
ORDER BY begin_time;
參考來源:
https://oracle-base.com/articles/11g/instance-caging-to-manage-cpu-usage-in-oracle-database-11gr2
https://kknews.cc/zh-tw/code/bmzopy9.html