標籤:
資料庫總管通過控制資料庫內部的執行調度來控制資源在各個會話之間的分布。通過控制所要啟動並執行會話以及會話啟動並執行時間長度,資料庫總管可以確保資源分布與計劃指令相匹配,因此也符合營運目標。
請注意,oracle resource manager對CPU的限制粒度為消費組(consumer group), 無法細化控制消費組內個別進程消耗CPU的比例,只要不超出該消費組的CPU限制,消費組內的單個或多個進程的CPU使用不受限制。
10g中Resource Manager資源管理員可以控制的資源種類:
- Oracle進程的CPU使用率
- 並行度(Parallel)
- UNDO數量
- SQL語句操作執行時間(Execute Time)
- 會話空閑時間(Idle Time) ---串連使用者處於unactive狀態超過idle time,會話自動被kill
- 活躍會話(session)數 --- 注意:是活躍即處於active狀態的會話
CPU資源使用說明:
一, EMPHASIS CPU 分配方法確定在資源計劃中對不同使用者組中的會話的重視程度。CPU
佔用率的分配層級為從1 到8,層級1 的優先順序最高。百分比指定如何將CPU 資源分派
給每一級中的各個使用者組。
以下規則適用於EMPHASIS 資源分派方法:
CPU 資源在給定層級按指定的百分比分配。為資源使用者組指定的CPU 百分比是該
使用者組在給定層級可以使用的最大值。
給定層級上沒有使用的使用者資源可供下一層級的使用者組使用。例如,如果層級1
的使用者組只使用了60% 的可用資源,則其餘的40% 可供層級2 的使用者組使用。
任何給定層級的百分比總和必須小於等於100。
對於沒有明確指定計劃指令的所有層級,其所有子計劃或使用者組的預設資源是0%。
EMPHASIS 資源分派方法避免了資源缺乏問題,該問題導致優先順序較低的使用者沒
有啟動並執行機會。
二,RATIO 策略是一個單層級CPU 分配方法。將指定要為使用者組分配的CPU 比率相對應的數字,而不是百分比。例如,假定有三個使用者組OLTP_USERS、DSS_USERS 和BATCH_USERS,可以指定下列比率:
OLTP_USERS:4
DSS_USERS:3
BATCH_USERS:2
OTHER:1
這就類似於讓OLTP 使用者獲得40% 的資源、DSS 使用者獲得30% 的資源、批使用者獲得20%的資源、所有其它使用者組獲得10% 的可用資源。如果OTHER 或DSS_USERS 使用者組中當前都沒有使用者在使用CPU 資源,則OLTP_USERS 使用者組將獲得三分之二的可用資源,而BATCH_USERS 使用者組將獲得三分之一。
最大估計執行時間:
1. 資料庫總管可以預先估計操作的執行時間。
2. 可以在資源使用者組層級為操作指定最大估計執行時間。
3. 如果估計時間超過MAX_EST_EXEC_TIME,則操作不會啟動。(ORA-07455)
4. 此功能的好處是消除了使用過多系統資源的異常大的作業。
5. 預設值為UNLIMITED。
通過設定資源計劃指令的MAX_EST_EXEC_TIME 參數,可以定義任何給定時間發生的
任何操作的最大估計執行時間。設定了此參數後,資料庫總管將估計特定作業消
耗的時間。如果操作的估計時間超過MAX_EST_EXEC_TIME,則不啟動操作並發出
ORA-07455 錯誤。這樣可以消除佔用過多系統資源的任何異常大的作業。
如果有多個計劃指令引用了某個資源使用者組,則該組可能有多個MAX_EST_EXEC_TIME。
資料庫總管將選擇所有傳入值中限制性最強的那個值。
使用基於成本的最佳化程式的統計資訊,可以計算出給定語句的估計執行時間。
並行度
PARALLEL_DEGREE_LIMIT_MTH 限制任何操作的最大並行度。只能為資源使用者組,
而不能為子計劃指定此方法。ABSOLUTE 方法是可能值,該方法指定可以為一個操作分配
的進程數量。如果有多個計劃指令引用了相同的子計劃或使用者組,則使用所有可能值中
的最小值作為該子計劃或使用者組的並行度限制。
活動會話池
ACTIVE_SESS_POOL_MTH 限制活動會話的數量。所有其它會話均為非活動的,在隊列
中等待啟用。ACTIVE_SESS_POOL_ABSOLUTE 是預設且唯一的可用方法。
使用活動會話池功能,可以控制每個資源使用者組的最大並發活動會話數。使用此功能,
由於資源的消耗與活動會話的數量成比例,所以DBA 能間接控制任何資源使用者組使用
的資源量。使用活動會話池有助於減少從系統中擷取資源的伺服器數量,因而可以避免
由於試圖同時運行過多作業而導致的低效的分頁、交換和其它資源損耗(如記憶體)。
使用活動會話填充活動會話池後,資源管理員對嘗試成為活動會話的所有後續會話進行
排隊,直到其它活動會話完成或成為不活動會話。活動會話是交易處理、查詢或並行操作
中當前涉及的會話。單獨的並行從屬進程不被視為會話;而將整個並行操作視為一個活動
會話。
每個資源使用者組只有一個隊列,排隊方法是先進先出(FIFO),並帶有逾時。隊列採用
記憶體結構,不能直接查詢。
參考:劉相兵的部落格
Oracle資源管理員介紹(一)