概述
Oracle是一个最早商品化的关系型数据库管理系统。是数据库专业厂商Oracle的核心产品。也是当前应用最为广泛、功能最强大、具有面向对象特点、采用客户机/服务器架构的数据库系统。
作为一个通用的数据库管理系统,Oracle具有完整的数据管理功能,这些功能包括存储大量数据、定义和操作数据、并发控制、安全性控制、完整性控制、故障恢复、与高级语言接口等。Oracle还是一个分布式数据库系统,支持各种分布式功能,特别是支持Internet应用。作为一个应用开发环境,Oracle提供了一套界面友好、功能齐全的数据库开发工具,使用户拥有一个良好的应用开发环境。Oracle使用PL/SQL语言执行各种操作,具有可开放性、可移植性、灵活性等特点。特别是,Oracle支持面向对象的功能,如支持类、方法、属性等概念,使得Oracle 产品成为一种对象/关系型数据库管理系统。
对于数据库管理员来说,工作中的压力是巨大的,因为除了日常的巨大工作量外,还需要面对各种负责问题的突然发生。当问题发生之后,需要立即对发生的问题进行分析,然后采取相对优化的措施来解决这些突如其来的问题。这些工作的顺利完成离不开应用监控软件的支持。应用监控软件可以帮助数据库管理员收集数据库、操作系统的数据,并且以图形化的方式显示这些数据的内容。
借助摩卡业务服务管理( Mocha Business Service Management,简称Mocha BSM)的应用监控模块,可针对Oracle数据库提供可视化监控、故障定位、统计报告等功能。
摩卡软件具有近十年Oracle系统管理、相关开发和维护的经验,提供最具管理价值的指标,细化到每一个应用元素的监控,从根本上关注Oracle的运行状态。以自动化的方式将Oracle进行监管,实现平台级故障预警、性能预警、配置变更预警等功能。使管理员可以轻松、快捷的分析问题和采取相应的解决措施。
对Oracle DB进行性能调整
下面我们就举例说明在Mocha BSM的帮助下通过调整共享池提升Oracle DB的性能:
调整共享池主要包括三个方面:库高速、数据字典缓存、对话信息。由于Oracle管理共享池中数据的算法,使得数据字典缓存中的数据比库高速缓存中的数据在内存中存留的时间长,因此,只要把库高速缓存调整成可以接受的命中率,就能提高数据字典缓存的命中率。
一般来说,库高速缓存总不命中数与总存取数之比应当接近零,如命中率值为0.001%,说明库高速缓存命中率很高,该比率如果接近或大于5%,就应当立即采取措施来减少这种不命中。
措施一:增加初始化参数shared_pool_size的值,提高库高速缓存可用的内存数量,同时为了取得好的效果,可能还要增加初始化参数open_cursors的值,以提高对话允许的光标数。需要注意的是:为库高速缓存分配了太多的内存可能引起调页或交换。
措施二:写等价的SQL语句,尽可能让SQL语句和PL/SQL块共享一个SQL区,来减少库高速缓存的不命中。这是应用设计人员应该做到的:SQL语句或PL/SQL块的文本必须每一个字符都等价,包括大小写和空格。
通常手工检查命中率的方法
检查、调整库高速缓存 可以通过动态性能表V$LIBRARYCACHE来查询Instance启动以来所有库高速缓存的活动。
V$LIBRARYCACHE表中以下几列反映了库高速缓存在执行调用阶段的不命中:
PINS列,它的值显示在库高速缓存中执行的次数;
RELOADS列,它的值显示在执行阶段库高速缓存不命中的数目。
检查命中率
借助Mocha BSM对Oracle DB的60多个性能监控指标之一:库缓存命中率,您可以直观的看到当前的Oracle DB的库缓存命中率为97.79%(如下图),并且根据您的需要,还可以对库缓存命中率设置报警阈值,一旦被监控的Oracle DB的库缓存命中率超过设定的阈值,Mocha BSM将立即给数据库管理员发出报警(方式包括:邮件、短信、电话、桌面声光)。