|
性能与RAC 1.sequence sequence的值保证顺序变化。所以需要使用到sequence时oracle必须从数据字典中查出上一个值, 产生值,再更新数据字典。对RAC环境性性能影响非常明显。所以要尽量在家cache值,这样减少 sequence本身在实例间传递,有助于减少索引块的竞争。 2.索引块竞争 放在索引数据块当中。如果应用是insert操作密集型的,这个索引块会在实例间频繁传递,消耗宝 贵的cache fusion资源。 块竞争访问。还可以考虑使用reverse index。reverse index,比如数据值是123,则记录索引时 要反过来变成321;下一个记录是124,索引值反过来是421,这样索引项就可能分散到不用的索引 块中。从而减少实例间竞争。 3.undo block 如果有数据块在select后被修改,或者数据块上有活动事务,oracle会利用undo tablespace内容 构造read consistent数据块。如果是索引扫描,索引块修改频率远大于数据块本身的修改率。因 此也可能导致CR索引块在实例间大量传递。 用小事务,以减少对CR的需要。 4.全表扫描 实例中寻找,最后才从磁盘中读取。如果经常使用全表扫描,势必会造成数据块在实例间频繁传递 ,加剧cache fusion的压力。因此RAC中应该尽量减少全表扫描,或者使用分区技术尽量分散实例 的数据请求。 5.cache fusion性能指标。 ,衡量cache fusion性能指标常用有以下几种。 global cache service等待事件: SQL> select INST_ID,EVENT,p1 file_unmber,p2 block_nimber,wait_time no rows selected 一致性(CR)读,判断CR效率的SQL语句如下: ((b1.value/b2.value)*10) "avg receive time (ms)" INST_ID recevied recevied time avg receive time (ms)
ORACLE建议AVG Receive time 小于15ms,则current read效率正常。 的等待事件。 一个数据块都会产生GC Current/Cr Request这个事件,这个事件本身只有一个占位符,并不代表 真正的等待。 (2)GC Current/Cr 2/3 Way这个事件描述的请求一个数据块,请求立即被满足没有发生等待。根据 请求的数据块类型可以分成current和CR两类,而根据返回路径又可以分为2way 3way。 (3)gc current/cr grant这个事件也是代表数据块的请求立即获得响应,没有等待。当向resource master发出请求时,resource master通过GRD发现目前还没有实例拥有数据块的缓存,所有 resource master同意该请求。也就是请求实例可以从磁盘读入到SGA。这个事件和前一个事件的区 别就在于是否有数据块的缓存。 (4)gc current/cr block busy、gc current grant busy。gc current/cr block/grant congested 这些事件和前面不带busy的事件相对,分别代表,请求没有立即被满足,由于资源冲突 而发生等待。
启用AWR 数据库的初始化参数STATISTICE_LEVEL也控制着AWR对统计数据的手机,这个参数有如下3个取值。其中typical是缺省值。 SQL> show parameter statistics_level NAME TYPE
VALUE basic:不做数据收集,相当于关闭AWR
SQL> select * from DBA_HIST_WR_CONTROL; DBID
SNAP_INTERVAL
RETENTION TOPNSQL 修改:
最常用是使用$ORACLE_HOME/rdbms/admin/awrrpt.sql |