oracle resource manager (ORM)舉例
http://database.chinaunix.net/a2010/0409/871/000000871380_1.shtml
什麼是Oracle Resource Manager
Oracle Resource Manager是Oracle8i開始提供的資料庫元件,目的是可以讓Oracle定義資料庫資源的利用,通過監控資料庫各Users的資源利用情況,
可以合理的調整資料庫的使用.資料庫是執行在作業系統之上的一個應用,OS為資料庫分配了資源,但OS不能細粒度的控制資料庫怎樣去使用這些
資源,ORM可以幫助DBA合理規劃這些資源.ORM的使用不會影響資料庫的效能.
跟OS的資源管理相比較,ORM(Oracle Resource Manager)可以提供下列特性:
防止資源的過度消耗:ORM可以從session級別控制CPU、Undo等系統資源的過度消耗.通過定義使用比例的方法防止CPU被某個session獨佔耗光;
合理排程系統資源:單獨控制各session的資源利用率,可以將寶貴的系統資源(比如CPU)按照比例分配給不同的使用者組,給一些重要的應用提供
足夠的資源,回收浪費的資源;
控制資料庫資源:通過ORM,控制資料庫的有限資源(Undo,CPU等)的分配方式;
相容作業系統的資源調整:在一個多CPU系統中,ORM相容OS排程分配,均衡分配CPU的使用;
Oracle Resource Manager相關內容
ORM由一系列的元件組成,這些元件的相互配合可以完成比較複雜的資料庫資源分配.
Resource Plans:定義資源配置計劃,plans是一個樹形結構的組織,可以建立多個plans,但同時只能有一個plan啟用被系統使用;
Resource consumer groups:資源組定義
Resource allocation method:每個計劃中可以定義和控制分配的資料庫資源;
Resource plans directives:將每個計劃配置分配到相應的資源組;
levels:定義了CPU的優先順序別,目前可以支援8個級別,當上級的group沒有消耗分配的CPU,可以順延到下個level使用;
Oracle 9i中ORM(Oracle Resource Manager)
9i對ORM進行了增強,在8i的基礎上提供了多種可控的Oracle資源.
CPU Method(8i提供)
通過該方法可以對非常稀缺的CPU資源進行分配,Oracle提供了8個levels控制CPU的使用,對不同的group按照百分比分配不同比例的CPU;上一級沒有使用完的CPU 資源會自動過度到下個level的group繼續使用;
Degree of Parallelism Limit(8i提供)
限制每個資源組並行操作的最大並行度;
Active Session Pool with Queuing
控制每個resource group可以建立的最大sessions,這裡指活動的session,如果一個session進入inactive狀態,會自動退出session pool,讓一下session進入
session pool,Oracle預設利用FIFO(First In First Out)的原則維護active session pool佇列.如果一個並行的會話進入佇列,Oracle會預設其多個session為一個獨立的session.
Execution Time Limit
有時間我們需要防止一個長查詢或大事務耗光系統資源,可通過該引數定義大型查詢或事務的執行時間,如果超過了設定的時間,Oracle會自動終止查詢或事物,以秒為單位.
Automatic Consumer Group Switching
8i中允許session或user可以在資源組之間手動切換,9i增強了這一功能,允許其自動切換。9i提供了兩個引數控制資源組的自動替換:
SWITCH_GROUP:定義session或user切換的新的group;
SWITCH_TIME:以秒為單位,定義了session或user在原group中任務多長時間後還沒結束就可以切換到新的group;
Undo Pool
控制每個group可用使用的最大Undo空間,如果事務執行的過程中發現Undo消耗殆盡,後續事務會持續等待直到有可用的Undo空間.
ORM的管理
OEM:圖形化的ORM管理介面,支援建立、監控ORM等操作;
DBMS_RESOURCE_MANAGER:ORM的PL/SQL API;
DBMS_RESOURCE_MANAGER_PRIVS:ORM許可權管理API
ORM相關檢視:
DBA_RSRC_PLANS
DBA_RSRC_CONSUMER_GROUPS
DBA_RSRC_PLAN_DIRECTIVES
DBA_RSRC_CONSUMER_GROUP_PRIVS
V$RSRC_PLAN
V$RSRC_CONSUMER_GROUP
ORM(Oracle Resource Manager)的許可權
ORM只有ADMINISTER_RESOURCE_MANAGER系統許可權,不支援通過grant,revoke的管理方式;必須通過DBMS_RESOURCE_MANAGER_PRIVS進行GRANT和REVOKE;
Oracle中使用ORM(Oracle Resource Manager)
Oracle有一個跟ORM相關的引數:RESOURCE_MANAGER_PLAN,定義好了RESOURCE PLAN之後,必須設定此引數以啟用ORM,只有一個RESOURCE PLAN可以啟用使用,此引數支援ALTER SESSION/ALTER SYSTEM動態修改.
ORM舉例
REM 建立測試使用者
CREATE USER OA_USER IDENTIFIED BY iv1234
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
ACCOUNT UNLOCK;
CREATE USER OA_ADMIN IDENTIFIED BY iv1234
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP ACCOUNT UNLOCK;
GRANT CONNECT TO OA_USER;
GRANT CONNECT TO OA_ADMIN;
–建立相關的組
BEGIN
--清楚ORM臨時區域
DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA;
--建立新的ORM臨時區域
DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA;
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
CONSUMER_GROUP =>'OA_USER_ONLINE',
COMMENT =>'建立OA系統的資源管理組');
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
CONSUMER_GROUP =>'OA_USER_ADMIN',
COMMENT =>'OA 系統的後臺服務資源組');
--建立PLAN
DBMS_RESOURCE_MANAGER.CREATE_PLAN(
PLAN =>'OA_ORM',
COMMENT =>'OA 資料庫資源計劃');
--建立PLAN DIRECTIVES
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
PLAN =>'OA_ORM', GROUP_OR_SUBPLAN =>'OA_USER_ONLINE', COMMENT =>'oa線上使用者資源控制計劃',
CPU_P1 =>70,
CPU_P2 =>0,
ACTIVE_SESS_POOL_P1 =>3000,
PARALLEL_DEGREE_LIMIT_P1 =>2,
MAX_EST_EXEC_TIME =>900);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
PLAN =>'OA_ORM',
GROUP_OR_SUBPLAN =>'OA_USER_ADMIN',
COMMENT =>'oa線上使用者後臺服務資源控制計劃',
CPU_P1 =>10,
CPU_P2 =>0,
ACTIVE_SESS_POOL_P1 =>5,
PARALLEL_DEGREE_LIMIT_P1 =>2,
MAX_EST_EXEC_TIME =>900);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
PLAN =>'OA_ORM', GROUP_OR_SUBPLAN =>'OTHER_GROUPS', COMMENT =>'其他應用的資源計劃',
CPU_P1 =>0,
CPU_P2 =>100,
PARALLEL_DEGREE_LIMIT_P1 =>2);
DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA;
DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA;
END;
/
–初始化OA_USER、OA_ADMIN的資源組
BEGIN
DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP(
GRANTEE_NAME =>'OA_USER',
CONSUMER_GROUP=>'OA_USER_ONLINE',
GRANT_OPTION=>FALSE);
DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP(
GRANTEE_NAME =>'OA_ADMIN',
CONSUMER_GROUP=>'OA_USER_ADMIN',
GRANT_OPTION=>FALSE);
DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP(
USER =>'OA_USER',
CONSUMER_GROUP=>'OA_USER_ONLINE');
DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP(
USER =>'OA_ADMIN',
CONSUMER_GROUP=>'OA_USER_ADMIN');
--允許OA_ADMIN可以替換到GROUP OA_USER_ONLINE
DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP(
GRANTEE_NAME =>'OA_ADMIN',
CONSUMER_GROUP=>'OA_USER_ADMIN',
GRANT_OPTION=>FALSE);
END;
/
–查詢GROUP的切換
select username,initial_rsrc_consumer_group from dba_users WHERE username IN('OA_USER','OA_ADMIN');
USERNAME
------------------------------------------------------------
INITIAL_RSRC_CONSUMER_GROUP
------------------------------------------------------------
OA_ADMIN
OA_USER_ADMIN
OA_USER
OA_USER_ONLINE
–在資料庫中啟用OA_ORM plans
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN='OA_ORM' scope=BOTH;
System altered.
–看看session的登入資訊
select username,resource_consumer_group from v$session where username='OA_USER';
USERNAME
------------------------------------------------------------
RESOURCE_CONSUMER_GROUP
----------------------------------------------------------------
OA_USER
OA_USER_ONLINE
select username,resource_consumer_group from v$session where username='OA_ADMIN';
USERNAME
------------------------------------------------------------
RESOURCE_CONSUMER_GROUP
----------------------------------------------------------------
OA_ADMIN
OA_USER_ADMIN
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24570973/viewspace-752020/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle Database Resource ManagerOracleDatabase
- Oracle Resource Manager概述Oracle
- 2.7 Overview of Oracle Resource Manager in a CDBViewOracle
- Oracle 資源管理(resource manager)Oracle
- Lotus C API Extension Manager 應用舉例API
- Python下ORM的一個設計舉例PythonORM
- Resource Manager Enhancements in Oracle Database 11g (文件 ID 884082.1)OracleDatabase
- Oracle OCP 1Z0 053 Q690(Resource Manager&Undo)Oracle
- 一個RESOURCE MANAGER引起的問題分析
- profile的resource limits和資源計劃resource_manager_plan的limitMIT
- Oracle OCP 1Z0 053 Q435(Resource Manager&OHTER_GROUP)Oracle
- zt_Limiting I/O and CPU resources using 11g Oracle Resource ManagerMITOracle
- ORM 例項教程ORM
- Oracle OCP 1Z0-053 Q169(Maintain Task Window&Resource Manager)OracleAI
- Oracle OCP 1Z0-053 Q20(Resource Manager&CPU_WAIT_TIME)OracleAI
- 使用resource_manager限制使用者並行度並行
- 資料庫資源管理器(Database Resource Manager)資料庫Database
- Resource Manager資源管理之使用組切換分析
- oracle rollup,cube子句的應用舉例;Oracle
- Oracle logon trigger舉例OracleGo
- oracle安裝工具目錄常用解釋oracle wallet manager/Oracle Directory Manager /oracle net manager /Oracle Net ManagOracle
- Oracle simple resource planOracle
- MTK_on_line_FAQ_SW_ALPS_Framework+-+Resource+ManagerTheme+ManagerFramework
- monitor PX limits from Resource Manager for active sessions (文件 ID 240877.1)MITSession
- JAVA反射舉例Java反射
- 盒模型舉例模型
- 死鎖-舉例
- dbms_resource_manager.calibrate_io測試資料庫IO效能資料庫
- _resource_manager_always_on=FALSE引起排程異常的解決案例False
- 舉例說明Oracle資料庫審計的用法Oracle資料庫
- shell指令碼舉例指令碼
- java 正則舉例Java
- oracle10g 11g分割槽表建立舉例Oracle
- 11g alert log中的automatic SQL Tuning及Resource Manager planSQL
- SQLLOAD應用舉例SQL
- Oracle DRM 簡介(Dynamic Resource management)Oracle
- Oracle ASM oracleasm createdisk "Device or resource busy"OracleASMdev
- java中的單例模式,舉例說明。Java單例模式