您好,登錄后才能下訂單哦!
這篇文章主要介紹“ORCALE怎么建立一個資源計劃”,在日常操作中,相信很多人在ORCALE怎么建立一個資源計劃問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”ORCALE怎么建立一個資源計劃”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
1、 概念
使用數據庫資源管理對系統進行管理,包括使用資源計劃、資源使用者組和資源計劃指令。包括資源使用者組、資源計劃、資源計劃指令
2、 建立一個資源計劃過程
授予admin權限
execute dbms_resource_manager_privs.grant_system_privilege(grantee_name => 'pptest',privilege_name => 'ADMINISTER_RESOURCE_MANAGER',admin_option => FALSE);
創建資源組
SQL> execute dbms_resource_manager.create_consumer_group('VIP','VIP USER');
PL/SQL procedure successfully completed
SQL> execute dbms_resource_manager.create_consumer_group('gen','gen user');
PL/SQL procedure successfully completed
創建資源計劃
execute dbms_resource_manager.create_plan('PLAN_TEST','TEST');
為資源計劃分配資源分配方法(CPU,重點法)
execute dbms_resource_manager.create_pending_area;
SQL> execute dbms_resource_manager.create_plan_directive(plan => 'PLAN_TEST',group_or_subplan => 'vip',comment => 'cpu resource use',cpu_p1 => 100);
SQL> execute dbms_resource_manager.create_plan_directive('plan_test','gen','cpu resource gen user',cpu_p2=> 100);
SQL> execute dbms_resource_manager.create_plan_directive('plan_test','other_groups',comment => 'other user',cpu_p3 => 100);
為資源計劃分配資源分配方法(活動會話)
execute dbms_resource_manager.create_pending_area;
execute dbms_resource_manager.update_plan_directive(plan => 'PLAN_TEST',group_or_subplan => 'vip',new_active_sess_pool_p1 => 100(此資源組允許100個活動會話,new_queueing_p1 => 60(秒為單位));
execute DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
為資源計劃分配資源分配方法(預計最大執行時間)
當預計執行時間大于預計時間,語句將不會執行。
SQL> execute dbms_resource_manager.create_pending_area;
PL/SQL procedure successfully completed
SQL> execute dbms_resource_manager.update_plan_directive(plan => 'PLAN_TEST',group_or_subplan => 'vip',new_max_est_exec_time => 1000);
PL/SQL procedure successfully completed
SQL> execute DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
PL/SQL procedure successfully completed
分配用戶到資源組
1、 設置用戶可以切換的組的權限
execute dbms_resource_manager_privs.grant_switch_consumer_group(grantee_name => 'pptest',consumer_group => 'vip',grant_option => false);
2、 設置用戶的初始化組
execute dbms_resource_manager.set_initial_consumer_group(user => 'pptest',consumer_group => 'vip');
啟動當前資源管理器
alter system set resource_manager_plan='plan_test' scope=both;
查看資源計劃組的設置。
select * from dba_rsrc_plan_directives where PLAN='PLAN_TEST';
3、 使用映射,讓某個用戶的會話都屬于某個資源組
execute dbms_resource_manager.create_pending_area;
execute dbms_resource_manager.set_consumer_group_mapping(dbms_resource_manager.oracle_user,'pptest','gen');
execute dbms_resource_manager.submit_pending_area;
4、 對于任何沒有分配初始組的用戶資源計劃組為DEFAULT_CONSUMER_GROUP,一旦計劃啟用這部分用戶會歸入OTEHER_GROUPS組
5、 對于設置了set_consumer_group_mapping的用戶及時你沒有權限及dbms_resource_manager_privs.grant_switch_consumer_group設置的,也是不能使用相應的MAPPING的組,如果設置MAPPING初始組就是MAPPING的。
execute dbms_resource_manager.set_consumer_group_mapping(dbms_resource_manager.oracle_user,'pptest1','VIP');
SQL> select username, resource_consumer_group from v$session where username is not null;
USERNAME RESOURCE_CONSUMER_GROUP
------------------------------ --------------------------------
PPTEST1 OTHER_GROUPS
PPTEST1 OTHER_GROUPS
還是OTHER_GROUPS
SQL> select * from dba_rsrc_consumer_group_privs where GRANTEE='PPTEST1';
GRANTEE GRANTED_GROUP GRANT_OPTION INITIAL_GROUP
------------------------------ ------------------------------ ------------ -------------
SQL> select * from dba_rsrc_group_mappings where VALUE='PPTEST1';
ATTRIBUTE VALUE CONSUMER_GROUP STATUS
------------------------------ -------------------------------------------------------------------------------- ------------------------------ ------------------------------
ORACLE_USER PPTEST1 VIP
6、 如果用戶不屬于任何組你想設置初始組會報錯
SQL> execute dbms_resource_manager.set_initial_consumer_group(user => 'pptest2',consumer_group => 'gen');
begin dbms_resource_manager.set_initial_consumer_group(user => 'pptest2',consumer_group => 'gen'); end;
ORA-29399: user PPTEST2 does not have privilege to switch to consumer group GEN
ORA-06512: at "SYS.DBMS_RESOURCE_MANAGER", line 489
ORA-06512: at line 2
因為必須設置
execute dbms_resource_manager_privs.grant_switch_consumer_group(grantee_name => 'pptest2',consumer_group => 'gen',grant_option => false);
及權限。
所以這里就涉及到一個權限問題set_initial_consumer_group他表示你可以使用的組,如果沒有在這里面你是不能使用的即使使用set_consumer_group_mapping進行修改但是雖然不報錯但是你是不能使用的,如果使用set_initial_consumer_group來定義初始組你是不能定義的會報錯涉及的視圖
dba_rsrc_consumer_group_privs
dba_rsrc_group_mappings
一個時間段一個用戶只能MAPPING到一個資源組,dba_rsrc_group_mappings可以修改,set_initial_consumer_group可以設置初始MAPPING。
所以一般的使用set_initial_consumer_group建立初始組就完成了映射,修改才使用set_consumer_group_mapping,不過一定要記得_resource_manager_privs.grant_switch_consumer_group設置這個用戶可以使用那些資源組。
到此,關于“ORCALE怎么建立一個資源計劃”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。