OCP043第十三讲Managing Resources
本讲内容主要包括:
1.配置数据库资源管理器
2.访问和创建资源计划
3.创建资源消费者组
4.为资源消费者组分配指令
5.映射资源消费者组合资源计划
6.激活资源计划
7.监控资源管理器
资源管理器的组件
资源消费者组:是一些具有相同资源请求的用户或者会话
资源计划:描述资源消费者组的资源分配,需要先激活计划,类似法律大纲性质
资源计划指令:指定资源的具体分配方式,包括作用的范围和分配方式,类似法律细则的性质
使用资源管理器可以管理数据库和操作系统的如下资源,同时可以让用户在多个资源消费者组中进行切换
–CPU usage
–Degree of parallelism
–Number of active sessions
–Undo generation
–Operation execution time
–Idle time
一:创建资源计划,资源消费者组,并将用户HR加入资源消费者组
"Automatic plan switching enable":表示开启子计划自动切换功能
"round robin"在组内按照时间片来分配资源
添加用户可以在资源消费者组内和用户属性两个地方进行操作,在用户属性选项卡上可以选择用户默认属于的资源消费者组,资源消费者组的概念类似于俱乐部,即用户有权限进入改组,但不一定非要属于这个组
激活资源计划
SQL> alter system set resource_manager_plan=plan1; System altered SQL> select sid,serial#,resource_consumer_group from v$session where username='HR'; SID SERIAL# RESOURCE_CONSUMER_GR ---------- ---------- -------------------- 134 138 GROUP2 138 172 OTHER_GROUPS
二:设置CPU使用限制
在资源计划中我们一共可以设置8个CPU使用的优先级,级别1为最高,级别8为最低。注意,在不同级别中CPU的总额不能超过100%。同时,只有在CPU使用率达到100%的时候,这里指定的不同级别所使用的CPU百分值才会生效。也就是说,即使系统完全空闲时,那么other_group的用户登录系统一样也可以使用100%的CPU。而如果当other_group用户在执行操作过程中sys_group组用户登录数据库,造成系统CPU满负荷运转。那么Oracle会优先为sys_group组分配CPU,只有当sys_group执行完毕后才会为other_group组成员分配CPU
三:设置并行度限制
创建平行度为10的索引,通过查看操作系统进程信息,发现在创建的过程中并没有产生10个的并行度,在使用索引的时候要取消并行度,否则会造成无谓的资源浪费
SQL> create index i04311_big on hr.t04311_big(line) parallel 10; Index created. [oracle@rhel6 ~]$ watch -n 1 "ps -ef |grep ora_p |grep -v 'pts/6'" Every 1.0s: ps -ef |grep ora_p |grep -v 'pts/6' Fri Aug 5 10:04:44 2011 oracle 12828 1 0 Aug04 ? 00:00:05 ora_pmon_ora10g oracle 12830 1 0 Aug04 ? 00:00:02 ora_psp0_ora10g oracle 22800 1 0 10:04 ? 00:00:00 ora_p000_ora10g oracle 22802 1 0 10:04 ? 00:00:00 ora_p001_ora10g oracle 22804 1 0 10:04 ? 00:00:00 ora_p002_ora10g oracle 22806 1 0 10:04 ? 00:00:00 ora_p003_ora10g SQL> select degree from dba_indexes i where i.owner='HR' and i.table_name='T04311_BIG'; DEGREE ------- 10 SQL> alter index i04311_big noparallel; Index altered. SQL> select degree from dba_indexes i where i.owner='HR' and i.table_name='T04311_BIG'; DEGREE -------- 1
四:设置活跃会话总数限制
SQL> show user; USER is "SYS" SQL> update hr.employees set salary=1000 where employee_id=100; 1 row updated. SQL> conn hr/hr Connected. SQL> update hr.employees set salary=2000 where employee_id=100; SQL> conn hr/hr Connected. SQL> update hr.employees set salary=3000 where employee_id=100; SQL> select sid,serial#,resource_consumer_group,status from v$session where username='HR'; SID SERIAL# RESOURCE_CONSUMER_GROUP STATUS ---------- ---------- -------------------------------- -------- 134 138 GROUP2 ACTIVE 138 172 GROUP2 ACTIVE SQL> update hr.employees set salary=4000 where employee_id=100; update hr.employees set salary=4000 where employee_id=100 * ERROR at line 1: ORA-07454: queue timeout, 1 second(s), exceeded
本文出自 “月牙天冲” 博客
相关新闻>>
- 发表评论
-
- 最新评论 更多>>