Oracle Resource Manager Concepts

这两天仔细阅读了Oracle Administrator Guide中关于Resource Manager的部分,基本上理清了之前我认为繁杂的概念和多个概念互相之间的关系。 在阅读的过程中,将自己认为重要的部分做了一份PPT,希望可以在下个月的ACOUG活动中跟大家分享。 Oracle Resource Manager View more presentations from kamusis. 在Database Consolidation时,Resource Manager可以解决我们心中的疑问,如果我将多个应用都放在同一个硬件服务器的同一个数据库中,那么如何防范互相之间的影响?另外一个更加实用且有需求的场景是在Oracle EBS中如果有大量的Report,如果设置Resource Manager来防止单个报表占用启用并行进程,占用过多CPU? 虽然在国内目前真正应用Resource Manager的客户几乎没有见到,但是我期望能够为今后我们的客户部署该项功能,资源管理在整个世界趋向虚拟化的过程中很有意义并且十分必要。

Oracle Histogram Investigation

这段时间有客户的10gR2数据库经常遭遇执行计划不稳定的现象,应该是直方图信息(Histogram)+绑定变量窥视(Bind Variable Peeking)造成的问题,藉此分享一下直方图的使用经验,但是我非常希望能听到针对本文的不同声音。测试环境Oracle 11.2.0.1 for Windows X64。 创建一个测试表。 drop table t; create table t as select rownum n1, ROUND(rownum / 100) n2, ‘xxxx’ n3 from dba_objects where rownum <= 10000; 这样我们生成了一张表T,其中有一万行记录。 N1字段可以认为是主键,有10000个distinct值(1-10000),这是一个数据分布均匀的字段; N2字段有101个distinct值,除了第一个值0和最后一个值101之外,其它的值都有100行记录,我们可以认为这是一个数据分布均匀的字段; N3字段有10000个值都是xxxx,实际上这也仍然是一个分布均匀的字段。 对于这三种类型的字段,我们都不应该去收集直方图信息,因为没有意义。那么直方图信息之所以需要存在的根本意义在哪里? 一. 我们何时该做 直方图究其根本实际上就是一个数据分布的图示,这个图示是为了在生成SQL执行计划的时候给Oracle的CBO更多的信息,换句话说,就是当在where条件中的某些列可能由于列值的不同而希望CBO制定出不同的执行计划时,我们需要直方图。 反过来说,什么情况下我们不需要直方图呢?或者说直方图的存在是没有意义的呢? 1. 当此列不用于查询时,也就是这个字段永远不会出现在where条件中(注意:即使是用于表连接那也算是出现在where条件中)。 2. 当此列无论给予什么比较值,我们都希望永远是一种执行计划时。上面例子中的3个字段都属于这种情况。 对于N1或者N2出现在where条件中,我们希望永远是用该列上的索引扫描(当然需要在该列上先创建索引),对于N3出现在where条件中,我们希望永远是全表扫描。这样的执行计划的制定,只要有表级别的统计信息就足够了,直方图信息的出现不但不会对制定正确的执行计划有帮助,甚至会出现奇怪的现象导致执行计划不稳定。 二. 我们可以怎样做 那么我们继续看一下收集直方图信息的方法,众所周知,是需要使用DBMS_STATS.GATHER_TABLE_STATS存储过程的,并且是由这个存储过程中的method_opt参数决定的。可以由以下几种选择。 method_opt=>’for columns size skewonly [column_name]’ 什么是SKEWONLY?先看一下Oracle官方文档中的定义。 Oracle determines…

ADRCI Purge is NOT What You Think It Should Be

ADRCI是在Oracle11g以后提供的实用程序,用来更加灵活的检查和分析各个ORACLE_HOME的告警文件,跟踪文件。 根据文档和帮助,ADRCI是具有purge功能的。 adrci> help purge Usage: PURGE [[-i | ] | [-age [-type ALERT|INCIDENT|TRACE|CDUMP|HM|UTSCDMP]]]: Purpose: Purge the diagnostic data in the current ADR home. If no option is specified, the default purging policy will be used. Options: [-i id1 | id1 id2]: Users can input a single incident ID, or a range of incidents to…