武文斌
摘要:Oracle数据库是以高级结构化查询语言(SQL)为基础的大型关系数据库,能够对系统提供稳健的支持。随着Oracle数据库应用的不断深入,Oracle数据库维护和性能优化至关重要。本文从Oracle数据库性能优化的视角出发,结合研究现状,从一个全新的角度对Oracle数据库性能优化与实时监控技术进行研究,并提出针对性的建议。
关键词:Oracle數据库;性能优化;监控系统
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2019)07-0003-02
从当前IT系统的现状来看,大型应用系统多基于大型关系型数据库,但关系型数据库会随着联机用户的持续增加而对应用系统性能造成制约,并且基于关系型数据库的大型应用系统性能的提升是硬件系统扩容,但通常费用较为昂贵。在这种背景下,Oracle数据库以其使用方便、可移植性好、功能强大的优点,能够对当前大用户背景下的应用系统提供稳健的支持,因此Oracle数据库的性能优化和监控分析具有重大的现实意义。
1 Oracle数据库概述
Oracle数据库是以高级结构化查询语言为基础的大型关系数据库,在系统应用中,随着数据量的不断增大,Oracle数据库需要加以优化调整才能发挥应有功效。对Oracle数据库性能进行优化调整就需要先了解其体系结构,即物理结构、进程结构、内存结构、逻辑结构。物理结构是指组成数据库的操作系统物理文件,包括控制文件、参数文件、数据文件、归档日志文件和重做日志文件;进程结构包括后台进程、用户进程和服务器进程;内存结构包括Java池、程序全局区、排序区、系统全局区、大池;逻辑结构包括数据块、区、段、表空间、模式对象。
对Oracle数据库性能进行优化调整通常是在两个阶段,即设计阶段和数据库运行阶段,设计阶段的优化调整集中于物理结构和逻辑结构,数据库运行阶段优化调整集中于应用程序、网络性能、数据库环境以及操作系统。操作系统的优化调整方法一般包括控制分页、减少内存交换、使SGA留驻内存。对Oracle数据库性能优化调整时需要先明确哪些因素有较大的影响,因此需对Oracle数据库监控对象进行分析,包括CPU、I/O、内存、会话、回退段、Oracle模式对象。
2 Oracle数据库性能优化
(1)内存优化
在Oracle数据库性能优化的内存优化调整一般是调整系统全局区(SGA)。
①共享池调整:执行select namespace, gethitratio from v$librarycache,gethitratio若在95%以下则需注意调整;重装率大于1%需调整共享池大小;字典高速缓存命中率结果小于85%则需增加共享池的大小。
②重做日志缓冲区调整:查询重做日志缓冲区的效率,如果其值不断增大,则需增加log_buffer的大小。
③缓冲区高速缓存调整:Oracle数据库运行时,为缩短响应时间,提高相应效率,应尽可能从缓冲区高速缓存中寻找数据,这需监控缓冲区高速缓存的命中率,如果命中率低于90%,则需增加db_cache_size的值。
(2)I/O优化
为提升Oracle数据库性能,应尽量减少磁盘I/O,并使用本地管理表空间,进而平衡I/O,平衡多个磁盘驱动器的负荷。具体优化策略包括:①同一表空间多个数据文件存放于不同磁盘;②访问量大的数据文件应在独立磁盘上进行存放;③用户数据一般不放在system表空间,而是单独创建表空间;④创建临时表空间用于排序操作,创建单独的回滚段表空间,是数据库碎片不散落在多个表空间;⑤创建单独的索引表空间,其区分磁盘存放索引数据与表数据;⑥为减少磁盘竞争,重做日志文件单独存放,尽量不要与数据文件存于统一磁盘,且重做日志文件要足够大。
(3)CPU优化
应用系统与应用软件性能不仅受I/O影响,还受CPU约束。工作高峰时CUP使用率要求在90%以下,如空闲时CPU使用率依然很高,则需调整优化CPU,增加CPU资源。通过查看v$sysstat数据字典中的用户态CPU时间和操作态CPU时间,查看当前连接Oracle数据库各个会话占用CPU时间,若操作系统占用CPU时间在90%以上则说明正常,否则说明服务器CPU被其他程序占用过多,造成CPU资源不足。这是需要分析SQL语句,对低效率的SQL语句和锁冲突进行调整优化,或增加Oracle参数高速缓存的光标数的值。
(4)网络性能优化
网络性能是影响Oracle数据库性能的又一重要因素,优化调整的策略则主要是减少网上数据流量。Oracle中的网络协议是Net 8或SQL*Net,其为客户端和Oracle服务器提供透明连通性。为减少网络信息流量,确保网络吞吐量的快速性,需测出网络增加的延迟。Oracle数据库系统提供了v$session_wait、v$session_event和v$sesstat三个动态性能表。
在v$session_event中用信息间等待时间评估网络效率,在v$session_wait中用等待事件与Oracle做出的回应评估网络效率,在v$sesstat中查看接收和发送到客户端的字节数,以及客户端做出的请求数目,来评估网络效率。
3 Oracle数据库监控系统设计实现
(1)需求分析与总体框架
随着网络的快速发展,客户访问数量越来越大,对系统性能要求越来越高,因此Oracle数据库实时监控系统对Oracle数据库系统而言十分必要,是调整优化Oracle数据库性能的重要子系统。由于访问客户数量的增大,在原有硬件系统的基础上,系统负荷量越来越大,进而影响Oracle数据库系统性能,通过Oracle数据库实时监控系统对数据库性能进行实时监控,能够为其调整优化提供支持。
Oracle数据库监控系统基于J2EE分布式构件技术实现,采用B/S三层架构,保证系统扩展性和跨平台性。监控系统的设计要遵循“开-闭”原则,关键是抽象化,实现对扩展开放。Oracle数据库实时监控系统应用Struts开发框架,分为客户端、业务逻辑层、数据库服务器层三部分。客户端用户界面提供可视化接口,支持IE和Applet等。业务逻辑层将数据访问和业务流程控制分开,前端是远程方法调用服务器、Servlet/JSP等应用,后台是数据采样过程。数据库服务器层负责数据库管理,并相应应用服务器的数据请求。
(2)模块设计
Oracle数据库实时监控系统功能模块设计主要涉及模块独立和信息隐藏两方面,实现参数配置、报警模块、数据访问、数据采集功能。数据采集主要包括以下五个部分:
数据库预览:实现对后台数据库性能指标的概览,比如CPU和内存使用情况、进程以及磁盘存储、SGA等信息;
性能参数指标监控:监控主要性能指标包括排序区情况、重做日志活动、字典高速缓存命中率、缓冲区命中率、回滚段、库高速缓存命中率等。性能指标监控处理流程为“监控获取性能参数值→与标准值比较→判断是否超过阈值→报警并给出优化建议→存储参数值”;
存储指标监控:目标对象为Oracle数据库存储动态,因此监控性能指标包括SGA分配、数据文件、表空间等常用项目;
数据库问题管理:DBA实现对Oracle数据库常规问题的检查,包括有问题的SQL、文件I/O、等待事件和锁表信息;
对象管理:包括SGA、索引、数据库表、同义词、序列、视图等。
(3)数据库设计
为减轻Oracle数据库中监控系统对整个系统的影响,监控系统的数据库单独存放系统数据和历史性能数据,要求具备快速读取、安全存放能力。监控系统数据设计需遵循标准和规范化原则,考虑如下内容:数据结构要符合规范,是业务处理逻辑更清晰;对数据操作应尽量简化,避免过多的表连续等关联操作;对相关联的表添加约束条件,简化程序对数值处理的流程。
以监控对象为中心,设计一个目标实体作为各种待监控目标的主表,核心对象的表主要包括Target目录表、数据库目标表、主机目标表、监控项目表、报警阈值表、实时整数监控数据表、历史整数监控数据表、系统用户表、系统资源配置表等。
在数据库配置中,所有表及相关索引在服务器端程序初始化配置时创建,通过编辑sysDB.config文件中的数据库配置参数,即可在调用initSysDB.sh脚本时通过读取sysDB.config文件中参数自动在系统数据库中创建系统数据库中相关对象。sysDB.config文件中主要参数赋值可根据实际系统数据库创建情况进行修改。在配置系统数据库用户时先创建用户,并赋予其connect,resource权限。在Oracle监控系统数据库中创建添加、删除和查询PLSQL存储过程,充分发挥数据库对数据的处理能力。
(4)监控系统功能实现
从Oracle数据库监控系统运行的流程设计可知,监控功能的实现需要目标端程序和服务器端程序共同协作才能完成。程序使用DBTarget对象定义了被监控的目标数据库,ServerTarget对象定义了被监控的目标主机。在ServerTarget类和DBTarget类中均通过Monit()方法完成对目标端操作哦系统层监控参数和数据库实例的监控数据收集。
目标端操作系统状态监控程序流程为:收集Oracle数据库系统运行数据→与服务器程序建立通信→数据传输→是否更新监控参数→更新收集参数→是否停止监控→结束。
目标Oracle数据库状态监控流程:连接Oracle数据库→访问目标Oracle数据库→收集目标Oracle数据库运行数据→与服务器建立通信→数据传输→是否更新监控参数→更新收集参数→是否停止监控→结束。
在完成监控系统功能流程后,确定数据库信息获取的实现方式,包括成员函数,然后实现表空间监控,最后设计系统人机交互界面,最终完成监控系统。
参考文献:
[1] 刘梦甜.Oracle数据库性能监控与分析系统设计[J].信息技术与信息化,2017(4).
[2] 黃杰生.基于ORACLE的数据库性能优化设计[J].电子技术与软件工程,2018(10).
[3] 杨莹.基于Oracle数据库大数据的检索优化分析与设计[J].数码世界,2017(4).
[4] 余钦泉.ORACLE数据库的运行状况管理系统的设计与实现[D].厦门大学,2016.
【通联编辑:唐一东】