oracle数据库日常运维研究

2017-03-18 23:18张开基
科学与财富 2017年4期
关键词:故障排除运维

张开基

摘 要:oracle数据库作为目前市场占有率最大的数据库,以其查询效率高、运行安全可靠等优点被许多公司采用。数据库存储着公司生产经营的核心数据,因此安全性、可靠性等要求比较高。保证生产数据库系统的高效运行,从而确保公司核心数据的安全稳定,是数据库管理员的职责。其中,数据库调优和故障处理是数据库管理员日常工作的重要部分。本文通过数据库性能调优的方法研究与故障的分析排除,阐述了数据库日常运维的重要性。

关键词:运维;性能调优;故障排除

1.引言

公司生产数据库存储着公司的重要数据,是公司所有应用数据的唯一源头。生产数据库中存储的数据是公司基础数据的标准,是公司领导层进行重要决策所需数据的唯一来源。所以,确保生产数据库的运行稳定,能够快速响应公司所需数据的请求,是数据库管理员日常工作的重要内容。

数据库管理员的日常巡检中,应全面检查数据库服务器的硬件资源、数据库运行情况等,发现异常及时处理,这样才能最大限度的避免数据库产生性能问题,避免影响生产库的正常使用。这就要求管理员,平时要注意监控数据库,防止数据库产生严重的性能问题。当数据库出现性能问题时,要积极去解决它,防止出现数据丢失、生产库死机等严重事件。本文从数据库性能调优的常规手段入手,分析公司数据库的运行情况,查看数据库的性能状况,排除可能出现的性能问题。然后,针对数据库出现的异常状况,阐述了详尽的解决过程。

2. 数据库运行情况分析

2.1 等待事件及AWR概述

Oracle等待事件是衡量oracle性能状况的重要依据及指标。oracle中有两种类型的等待事件:空闲等待事件,即oracle正在等待事件的发生,这种类型的等待事件对数据库性能没有太大的影响,在日常调优中可以忽略;另一种是非空闲等待事件,即会话正在等待oracle完成的事件[1]。数据库出现非空闲等待事件一般表明服务器资源出现了瓶頸,数据库发生了资源竞争。如果某个非空闲等待事件比正常情况下持续时间变长,发生次数明显变多,这种情况一般就表示数据库发生了性能问题。

在数据库众多的管理工具中,Oracle提供的运行收集工具AWR是一个很强大的工具,通过AWR,可以收集系统信息及数据库运行情况信息,可以用来诊断数据库故障,也方便第三方技术支持进行远程阅读和建议[2]。通过AWR可以很容易的确定Oracle数据库的性能瓶颈所在,因此了解和使用AWR对于数据库管理员来说至关重要。

2.2 AWR报告分析

为了查看数据库运行情况,我们在数据库使用高峰期,提取了一份数据库AWR报告。其中,Top 5 Wait Events列出了数据库耗时最长或发生次数最多的五个等待事件,是整个AWR报告中最能披露问题的一部分内容。识别分析其中的等待事件往往可以帮助解决系统调整方面的性能问题。如果数据库参数TIMED_STATISTICS值设置为true,则等待事件会按照等待时间的长短来排序;如果没有,则会按照等待事件发生的次数来排序。

通过分析提取的AWR报告,前两位等待事件分别是CPU time、db file sequential read。其中,CPU time排位第一表明数据库没用io或内存等硬件瓶颈,如果利用系统命令查看cpu使用率在正常状态下,表明数据库运行情况正常。在等待事件排序中它居首,说明数据库运行正常,但是不能说明数据库性能良好,它不是衡量数据库性能好坏的指标。第二个等待事件db file sequential read等待次数远远多于后几个,但它所占的响应时间比重并不大,说明等待事件并不是太严重。下面来分析一下这个等待事件次数过多的原因。

通过查询v$session_wait视图,用来定位当前等待会话所等待数据的具体数据文件。查询出数据文件号5和数据块号55560,进一步定位等待事件相关的数据库表。登录数据库查看这张表,发现该表的结构比较复杂,存在BLOB类型的大字段,并且数据量巨大。通过与业务人员沟通,了解到此表是业务主表,访问量大。通过观察服务器硬件资源的使用情况,处于正常状态,所以决定不对它调整,再进一步密切观察。

3. 数据库故障的分析排除

3.1 故障分析

数据库管理员在日常的数据库监控中,有多种手段,比如利用系统命令prstat、vmstat等去监控系统资源的使用情况;利用telnet命令登陆服务器观察器cpu及I/O是否出现异常;利用数据库视图v$session等观察数据库的连接是否处于正常状态;利用spotlight、AWR工具获取数据库实时运行情况等等。

首先我们登录生产数据库,利用prstat –a查看系统进程消耗资源情况。通过查看运行结果,我们发现进程号为96的进程运行时间已长达三天,这表示此进程已遇到故障无法自动退出。我们下面要找出此进程无法退出的原因,必要的话要手动杀掉。

3.2 故障排除

首先我们抓取了最近几天数据库高峰期的awr报告,对比了一下awr报告,没发现有什么异常情况发生,系统资源及数据库运行情况都处于正常状况。

利用sql语句查出此进程正在运行的sql语句。我们利用autotrace命令得到了这条sql的执行计划。通过分析执行计划,也没有发现异常资源的消耗。由此,我们判断,此进程是数据库服务器没有正常退出的异常进程,可以手工将它杀掉。至于为什么没有正常退出,可能是系统的bug,需要进一步研究。

首先查找出此进程对应的数据库会话,查询出此进程对应的会话的SID和SERIAL#为20和44658。

利用alter system kill session 20,44658杀掉此会话,然后登陆数据库服务器利用命令kill -1 pid终止此异常进程。再次利用prstat –a查看系统资源,发现此异常进程已被杀掉,系统恢复正常。

4. 结束语

数据库调优在日常的数据库运维中占据了数据库管理员70%的工作量。除了调优,设置内存参数、对数据的存储划分等,都是数据库日常运维的一部分。数据库管理员的工作对一个公司来说,处于非常重要的位置。一旦数据库运行不稳定或出现故障,对公司造成的损失是不可估量的。因此,数据库管理员在日常的运维中,一定要细中再细,做好公司数据库的“管家婆”。

参考文献:

[1] 何曾樑.基于等待事件的Oracle数据库性能优化.现代计算机,2009,(7):106-109.

[2] 张文峰,彭小斌,林根深.AWR技术在ORACLE自动管理中的应用.中国数学医学,2014,(8):114-115.

猜你喜欢
故障排除运维
大型国有企业环保设施第三方运维的探索与实践
运维技术研发决策中ITSS运维成熟度模型应用初探
风电运维困局
谈电力运维安全隐患排查治理
杂乱无章的光伏运维 百亿市场如何成长
AK—10型起动机启动困难排除方法
拖拉机液压悬架系统故障原因及排除
拖拉机喷油泵工作原理及故障排除
基于ITIL的运维管理创新实践浅析