前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速找到OEACLE的性能问题

快速找到OEACLE的性能问题

作者头像
企鹅号小编
发布2018-01-11 17:29:22
7070
发布2018-01-11 17:29:22
举报
文章被收录于专栏:数据库数据库

对于传统应用系统,一旦系统性能测试达标上线后,后续出现性能恶化除了业务徒增之外,十有八九都是数据库惹的祸。通过快速的业务量比对排除异常后,重点的问题排查就要放到数据库性能上。今天我们就ORACLE数据库性能恶化的定位处理方法进行总结,用此方法可快速的找到故障原因。

数据库之所以出现性能恶化,其实就是在数据库所需要的CPU、内存、IO、网络等方面的现有的资源,无法满足当前系统所要消耗的资源。既然已经排除了业务量的徒增,也就间接说明这种消耗是非正常的消耗,我们把非正常消耗资源的业务逻辑找出来,也就间接的找到了性能恶化的原因。

ORACLE使用非空闲等待事件来体现某类资源的瓶颈,例如内存的争用、IO的等待。ORACLE 12C中等待事件分类情况如下:

ORACLE数据库中涉及等待事件的关键几张视图

V$SESSION:完整记录数据库的回话信息。

V$SESSION_WAIT:实时记录活动SESSION的等待情况,是当前信息。

V$SESSION_WAIT_HISTORY:对V$SESSION_WAIT的增强,记录活动SESSION的最近10次等待。

V$ACTIVE_SESSION_HISTORY:是ASH的核心,用以记录活动SESSION的历史等待信息,每秒采样一次,这部分内容记录在内存中,根据设置的缓冲大小来确定保留时间,数据库重启后信息丢失。

WRH#_ACTIVE_SESSION_HISTORY: 是V$ACTIVE_SESSION_HISTORY在AWR的存储地。

DBA_HIST_ACTIVE_SESS_HISTORY:视图是WRH#_ACTIVE_SESSION_HISTORY视图和其他几个视图的联合展现,通常通过这个视图进行历史数据的访问。

V$SYSTEM_EVENT: 由于V$SESSION记录的是动态信息,和SESSION的生命周期相关,而并不记录历史信

息,所以ORACLE提供视图V$SYSTEM_EVENT来记录数据库自启动以来所有等待事件的汇总信息。通过这个视图,用户可以迅速获得数据库运行的总体概况。

下面提供几个sql语句,可以在故障期间快速找到问题所在:

1、获取数据库一段时间内的TOP等待事件

select event,count(1)

from dba_hist_active_sess_history ash

where sample_time>=to_timestamp('2018-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss')

and sample_time

and SESSION_STATE = 'WAITING'

group by event

order by 2 desc

2、查看引起某一类等待事件执行sql的sql_id,以便快速找到问题sql

select sql_id,sum(time_waited)

from dba_hist_active_sess_history ash

where sample_time>=to_timestamp('2018-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss')

and sample_time

and SESSION_STATE = 'WAITING'

and event='db file sequential read'

group by sql_id

order by 2 desc

3、通过sql_id查询sql的详细情况,为定位优化提供支持

select sql_id,sql_text from v$sql where sql_id='acmvv4fhdc9zh'

接下来的工作就是通过等待事件的参数分析和对应sql的执行计划的分析,最终找出问题并解决问题。近期发生的两次故障都通过此方法快速找到故障原因,一次是查询sql索引失效导致的全表扫描,最终导致IO资源的耗尽。另外一次是数据更新导致的TX锁,最终导致死锁。这样的故障,从应用测没有任何头绪,但几条简单的sql就可以直指故障原因。

对于数据库的日常巡检和应用保障工作,本方法也非常有效,确保系统有良好的运行效率,无过量的等待事件,这种状态将为应用系统提供稳定的数据库支撑环境。

本文来自企鹅号 - 全球大搜罗媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - 全球大搜罗媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档