- 浏览: 4406998 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (634)
- Oracle日常管理 (142)
- Oracle体系架构 (45)
- Oracle Tuning (52)
- Oracle故障诊断 (35)
- RAC/DG/OGG (64)
- Oracle11g New Features (48)
- DataWarehouse (15)
- SQL, PL/SQL (14)
- DB2日常管理 (9)
- Weblogic (11)
- Shell (19)
- AIX (12)
- Linux/Unix高可用性 (11)
- Linux/Unix日常管理 (66)
- Linux桌面应用 (37)
- Windows (2)
- 生活和工作 (13)
- 私人记事 (0)
- Python (9)
- CBO (15)
- Cognos (2)
- ORACLE 12c New Feature (2)
- PL/SQL (2)
- SQL (1)
- C++ (2)
- Hadoop大数据 (5)
- 机器学习 (3)
- 非技术 (1)
最新评论
-
di1984HIT:
xuexilee!!!
Oracle 11g R2 RAC高可用连接特性 – SCAN详解 -
aneyes123:
谢谢非常有用那
PL/SQL的存储过程和函数(原创) -
jcjcjc:
写的很详细
Oracle中Hint深入理解(原创) -
di1984HIT:
学习了,学习了
Linux NTP配置详解 (Network Time Protocol) -
avalonzst:
大写的赞..
AIX内存概述(原创)
通过资源管理器设置并行度
并行度:指定不同的资源用户组里的用户在执行操作时,同一个资源用户组中的所有用户所能指定的最大并行度的总额,笔者理解成同一用户组所能使用的进程数, 待验证
配置并行度
设置并行度的SQL如下
dbms_resource_manager.clear_pending_area();
dbms_resource_manager.create_pending_area();
dbms_resource_manager.create_plan( ' MY_DAY_PLAN ', '');
DBMS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(PLAN => 'MY_DAY_PLAN',GROUP_OR_SUBPLAN => ' OLTP_GROUP ',NEW_PARALLEL_DEGREE_LIMIT_P1 => 3);
dbms_resource_manager.submit_pending_area();
dbms_resource_manager.switch_plan( plan_name => ' MY_DAY_PLAN ', sid => 'orcl' );
END;
验证并行度是否生效
SQL> show user;
USER is "HR"
SQL> create table emp_czm as
2 select * from employees
3 where 1=2;
SQL> declare
2 i int :=1;
3 begin
4 while i<=15 loop
5 insert into emp_czm
6 select * from employees;
7 i :=i+1;
8 end loop;
9 end;
10 /
在会话1中执行下列命令,进行并行度为5的查询
SQL>select /*+ parallel(emp_czm,5) */ * from emp_czm;
在会话2中执行下列命令
SQL> select sid,qcsid,degree from v$px_session where qcsid=141;
SID QCSID DEGREE
---------- ---------- ----------
102 141 3
104 141 3
100 141 3
141 141
其中sid为从属进程所对应的SID,QCSID为这些从属进程所对应的父SID,DEGREE表示并行度。
禁用MY_DAY_PLAN资源计划
SQL> alter system set resource_manager_plan='';
System altered
在会话1中执行下列命令,进行并行度为5的查询
SQL>select /*+ parallel(emp_czm,5) */ * from emp_czm;
在会话2中执行下列命令
SQL> select sid,qcsid,degree from v$px_session where qcsid=141;
SID QCSID DEGREE
---------- ---------- ----------
101 141 5
105 141 5
100 141 5
104 141 5
102 141 5
141 141
如上所示,设置并行度生效。
通过资源管理器设置活动seesion个数
由于活动的session必然消耗CPU或者I/O资源,因此通过控制当前的活动session的最大个数,能够对资源间接的进行控制。当用户组的某个用户所产生的session个数达到最大的时候,如果该用户还要在产生 活动的session ,则将该session放入队列,直到当前正在活动的session变为不活动时,等待活动的session才能开始活动。该队列为先进先出规则,也就是先进入队列的session先出队列。注意:并行执行所产生的session并不算作活动session。如果在队列里的session的等待时间超过指定时间,则该session会被切断。
设置活动session
设置活动session的sql如下
dbms_resource_manager.clear_pending_area();
dbms_resource_manager.create_pending_area();
dbms_resource_manager.create_plan( ' MY_DAY_PLAN ', '');
DBMS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(PLAN => 'MY_DAY_PLAN',GROUP_OR_SUBPLAN => 'BATCH_GRP',NEW_ACTIVE_SESS_POOL_P1 => 2,new_queueing_p1 => 5);
dbms_resource_manager.submit_pending_area();
dbms_resource_manager.switch_plan( plan_name => ' MY_DAY_PLAN ', sid => 'orcl' );
END;
验证设置活动session是否成功
在会话1和会话2中使用scott分别执行dead.sql
在会话3中使用scott用户连接
SQL> conn scott/scott;
ERROR:
ORA-07454: queue timeout, 5 second(s), exceeded
这个参数控制的是资源用户组内的用户同时可以运行的最大的活动SESSION的数量。这里值得强调的是ACTIVE_SESS_POOL_P1并不限制那些非活动的SESSION,仅仅对那些活动的SESSION有限制,因为一般说来只有那些活动的SESSION才会消耗系统的资源。
可以发现此时SESSION3被阻塞了,仅仅当SESSION1的SQL执行完毕,变成INACTIVE状态后,SESSION3才可以连接到数据库。那么这这个时候就有两个SESSION连接到数据库,但当一个执行SQL的时候,另一个SESSION会立刻被挂起。
可见设置活动session为3成功。
设置undo产生的数量
为了防止用户进行DML操作过程中消耗过多的UNDO,可以通过资源管理器控制用户组所能产生的undo的数据总量。
上图给OLTP_GRP用户组设置了200M的undo数据量,这200M undo数据包括active和inactive状态的undo数据。但不包括expired的undo数据。
设置活动undo数据量的sql如下
dbms_resource_manager.clear_pending_area();
dbms_resource_manager.create_pending_area();
dbms_resource_manager.create_plan( ' MY_DAY_PLAN ', '');
DBMS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(PLAN => 'MY_DAY_PLAN',GROUP_OR_SUBPLAN => 'OLTP_GRP',new_undo_pool => 204800);
dbms_resource_manager.submit_pending_area();
dbms_resource_manager.switch_plan( plan_name => ' MY_DAY_PLAN ', sid => 'orcl' );
END;
设置执行时间上限
有时候我们不希望用户组的用户执行消耗过长时间的操作。比如,在白天OLTP_GRP用户执行的操作都属于OLTP应用,当执行时间过长的时候OLTP_GRP组的用户就具有了BATCH_GRP批处理组用户的特性。这样我们就有必要将OLTP_GRP组的用户切换到BATCH_GRP。
其中Switch back to original group after call:表示较长时间的操作结束以后,session切换回原先的用户组。这里为OLTP_GRP。
有时候当某个session达到最大执行时间时,可能已经消耗了过多的资源,我们可以设定估计时间如下图设定估计的执行时间上限,并在上图勾选“Use estimate“选项来限定估计的时间上限。
限定执行时间上限的sql如下
dbms_resource_manager.clear_pending_area();
dbms_resource_manager.create_pending_area();
dbms_resource_manager.create_plan( ' MY_DAY_PLAN ', '');
DBMS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(PLAN => 'MY_DAY_PLAN',GROUP_OR_SUBPLAN => 'OLTP_GRP', NEW_SWITCH_GROUP => ‘BATCH_GRP’, NEW_SWITCH_TIME_IN_CALL => 30, NEW_SWITCH_ESTIMATE => ‘true’,new_max_est_exec_time => 20,);
dbms_resource_manager.submit_pending_area();
dbms_resource_manager.switch_plan( plan_name => ' MY_DAY_PLAN ', sid => 'orcl' );
END;
另外一个和NEW_SWITCH_TIME对立的参数是NEW_SWITCH_TIME_IN_CALL,如果使用了这个参数,那么执行完成后,不切换回原来的资源用户组。
设置空闲时间上限
某个session即便没有活动,也会消耗一定的PGA内存。因此,如果某个session连接上来什么都没做也一定会消耗资源。那么我们可以选择切断连接。
如果空闲时间超过5秒则会话会自动断开,当设置"Max Idle Time If Blocking Another Session(sec)“参数时如果有会话被阻塞的时间超过了设定值时,则阻塞会话将自动被切断。例如当会话1执行DML操作且未提交导致会话2被DML事务锁定,始终不能进行下去。那么当会话1不提交的时间超过30妙钟后,会话1被切断。会话1占用的锁被释放,从而会话2的事务能继续进行下去。注意,只有在会话1阻止了其他会话的DML事务该参数才生效。
创建资源计划的相关sql
1.DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
创建一挂起区域,每次对资源计划进行操作之前都必须要执行挂起操作,申请一块内存。
2,DBMS_RESOURCE_MANAGER.CREATE_PLAN
创建一个资源计划,参数PLAN表示资源计划的名字,COMMENT为该资源计划的注释信息
3,DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP
创建一个资源用户组,参数CONSUMER_GROUP为资源用户组名字,COMMENT为该资源用户组的注释信息
4,DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE
创建一个资源分配方法,参数PLAN为资源计划的名字,,GROUP_OR_SUBPLAN为下层资源用户的名字,COMMENT为资源分配方法的注释信息,CPU_P1表示该资源用户组在LEVEL上的CPU分配方案。
5,DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA()
验证用户资源计划的有效性
6,DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA()
提交用户资源计划
(2)当建立好用户资源计划之后,就需要将特定的用户与特定的资源计划相关联。
DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING (DBMS_RESOURCE_MANAGER.ORACLE_USER,'HR', ' OLTP_GRP ')
通过这条命令就可以将用户CNODS分配到资源组DB_DEV下。
(3)关联好之后就可以将新建立的用户资源管理置为有效
dbms_resource_manager.switch_plan( plan_name => 'MY_DAY_PLAN', sid => 'ORCL' )
通过这条命令将当前的用户资源管理计划设置为DW_PLAN
参考至:《教你成为10g OCP》韩思捷著
http://2jliu.itpub.net/post/21805/487037
本文原创,转载请注明出处、作者
如有错误,欢迎指出
邮箱:czmcj@163.com
发表评论
-
Oracle 11g、12c大量错误登陆尝试带来的数据库异常
2018-07-16 09:21 1530APPLIES TO: Oracle Database - ... -
如何定位那些SQL产生了大量的redo日志
2018-05-15 14:38 1768在ORACLE数据库的管理、 ... -
When Memory_target Is Set and Swap Size Is Not Big (Doc ID 2356025.1)
2018-03-16 18:13 1188Kkjcre1p: unable to sp ... -
Transparent Hugepage is not getting disabled (Doc ID 2279458.1)
2018-03-16 18:10 820Transparent Hugepage is ... -
Troubleshooting: "log file sync" Waits (文档 ID 1376916.1)
2017-03-09 14:32 1364What is a 'log file sync' wai ... -
log file sync总结
2017-03-09 14:36 3253log file sync等待时间发生在redo log从 ... -
Oracle Log File Sync Wait Event
2017-03-08 18:46 1168The Oracle “log file sync” wai ... -
Tuning ‘log file sync’ Event Waits
2017-03-08 18:41 855Tuning ‘log file sync’ Event ... -
Diagnosing buffer busy waits with the ash_wait_chains.sql script (v0.2)
2017-03-08 16:56 851Diagnosing buffer busy waits w ... -
Advanced Oracle Troubleshooting Guide – Part 11: Complex Wait Chain Signature An
2017-03-08 16:05 1093Here’s a treat for the hard-co ... -
Oracle 10046 SQL TRACE
2017-03-08 15:19 941为什么我们要使用10046 trace? 10046 ... -
Automatic Storage Management
2016-11-03 15:33 863SYSASM Role When Automatic ... -
ASM FAQ
2016-11-03 15:29 729ASM FAQ Oracle Automatic ... -
Oracle ALTER PROFILE语法
2016-10-10 11:36 3406ALTER PROFILE Purpose Use th ... -
Oracle FGA审计
2016-09-20 09:42 1389大家对trigger可能比较熟悉,但Oracle还有一个叫 ... -
Secret.txt
2016-09-14 17:20 0考试登录账号:YAMAC0043865 Chen1988协会网 ... -
Oracle Data Pump Internals
2016-09-13 16:38 776IntroductionOracle Data Pump w ... -
UDEV SCSI Rules Configuration for ASM in Oracle Linux 5, 6 and 7
2016-09-12 16:32 843UDEV SCSI Rules Configuration ... -
Cannot Allocate New Log
2016-02-21 12:28 5446故障报错 Thread 1 cannot allocat ... -
Oracle flashback dropped tablespace(原创)
2015-11-15 22:21 2014Oracle官方并不推荐在数据库物理结构发生改变的情况下进行 ...
相关推荐
通过使用Oracle Database Server 12cR2 Preinstall,你可以避免手动设置这些复杂细节,减少错误和时间消耗,使你能够更专注于实际的数据库部署和管理任务。在安装预配置包后,你可以继续安装Oracle数据库软件,然后...
oracle-rdbms-server-11gR2-preinstall-1.0-4.el7.x86_64.rpm
compat-oracle-rhel4-1.0-5.i386.rpm
oracle-database-server-12cR2-preinstall-1.0-3.el7.x86_64.rpm
oracleasm-support-2.1.4-1.el5.x86_64.rpm 适用于内核为2.6.18-164.el5环境使用
oracle-instantclient-basic-11.1.0.1-1.x86_64.rpm
oracleasm-2.6.18-194.el5xen-2.0.5-1.el5.x86_64.rpm
oracleasm-support-2.1.8-1.el6.x86_64.rpm
oracleasm-2.6.18-194.32.1.el5-2.0.5-1.el5.x86_64.rpm
oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
oracleasm-2.6.18-128.2.1.el5-2.0.5-1.el5.x86_64.rpm oracleasm-2.6.18-128.4.1.el5-2.0.5-1.el5.x86_64.rpm oracleasm-2.6.18-128.7.1.el5-2.0.5-1.el5.x86_64.rpm oracleasm-2.6.18-128.el5-2.0.5-1.el5.x86_64....
包含如下oracleasm包: kmod-oracleasm-2.0.6.rh1-3.el6.x86_64.rpm oracleasm-2.0.8-4.el6_6.src.rpm oracleasm-2.0.8-6.el6_7.src.rpm oracleasm-2.0.8-8.el7.src.rpm oracleasm-2.0.8-15.el7.centos.src.rpm ...
- **无法管理特定资源**:操作系统无法管理数据库的特定资源,如并行执行服务器和活动会话等。 为了解决这些问题,Oracle资源管理器应运而生。它可以按照数据库会话(sessions)的属性来划分会话用户组,并对会话组...
2. **sqlplus**:这是一个命令行工具,允许用户执行SQL查询和PL/SQL块,进行数据库管理。 3. **tnsnames.ora**:这是一个配置文件,定义了如何连接到不同的数据库服务,包括主机名、端口号和服务名等信息。 安装...
oracleasm-support-2.1.3-1.el5.x86_64.rpm
在Oracle数据库管理中,有时我们需要了解某个特定会话(Session)正在执行哪些SQL语句。这在性能调优、问题诊断等场景下尤为重要。以下将详细介绍如何通过不同的方法来查看当前会话所执行的SQL语句及相关信息。 ###...
oracleasm-support-2.1.3-1.el5.i386.rpm
### Oracle中Session与Processes参数的设置详解 #### 一、引言 在Oracle数据库管理过程中,合理设置系统参数对于确保数据库稳定运行至关重要。其中,“session”与“processes”两个参数直接影响到数据库能够同时...
在处理Oracle数据库的连接数和会话数问题时,系统管理员需要具备对这些关键概念的深刻理解,并且能够灵活运用各种诊断工具和命令来定位问题和解决问题。通过对这些知识点的学习,可以有效地提升数据库的运行效率和...
oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm --包含头文件和示例文件,为开发Oracle应用程序的即时客户端; 1.2 使用rpm -ivh [包名] 进行安装, 如:rpm -ivh oracle-instantclient11.2-basic-11.2....