暂无图片
DB 历史性能问题如何追踪
我来答
分享
许朝阳
2020-06-11
DB 历史性能问题如何追踪

请问各位朋友。

主要是 sqlserver 和oracle 环境 现在有 系统层监控
比如夜间 3点出现 CPU高的告警了。
白天了才发现但是没有及时登陆上去查看 性能sql问题。

请问大家平时都是怎么捕捉这些性能sql的,谢谢。

最好提供一些 现成的脚本 和方法。

我来答
添加附件
收藏
分享
问题补充
7条回答
默认
最新
lscomeon

用zcolud分析历史性能

暂无图片 评论
暂无图片 有用 0
打赏 0
lscomeon

剩下的就是awr了。

暂无图片 评论
暂无图片 有用 0
打赏 0
许朝阳

你好 zcolud 是什么呀 麻烦介绍一下

暂无图片 评论
暂无图片 有用 0
打赏 0
Kun

ASH分析呢

暂无图片 评论
暂无图片 有用 0
打赏 0
王雷

oracle看awr。sqlserver看动态视图或者建一个扩展事件

暂无图片 评论
暂无图片 有用 0
打赏 0
黄伟波

–查询历史某个时间段的等待事件(推荐)
dba_hist_active_sess_history视图数据来自于VACTIVE_SESSION_HISTORY,记录了内存中活动会话的历史信息。通过dba_hist_active_sess_history视图关联vsqlarea和DBA_HIST_SNAPSHOT可以跟踪到某个时间段内的sql。当然能跟踪到的sql多少取决于vsqlarea,毕竟只有还保留在vsqlarea中的sql才能跟踪到。
10.1、查看故障时间段等待事件、问题sql id及会话访问次数
–alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss’;
select trunc(sample_time, ‘mi’) tm, sql_id, nvl(event,‘CPU’),count(distinct session_id) cnt
from dba_hist_active_sess_history
where sample_time between to_date(‘2020-04-01 14:00:00’) and
to_date(‘2020-04-01 14:30:00’)
group by trunc(sample_time, ‘mi’), sql_id,nvl(event,‘CPU’)
order by cnt desc;

10.2、查看故障时间段该sql相关的等待事件及对应的会话访问次数
select sql_id, nvl(event, ‘CPU’), count(distinct session_id) sz
from dba_hist_active_sess_history a, dba_hist_snapshot b
where sample_time between to_date(‘2019-08-22 14:00:00’) and
to_date(‘2019-08-22 15:00:00’)
and sql_id = ‘4ksvn2rgjnhcm’
and a.snap_id = b.snap_id
and a.instance_number = b.instance_number
group by sql_id, nvl(event, ‘CPU’)
order by sz desc;

10.3、查看历史会话等待事件对应的session信息

–1、查看awr时间段
select to_char(s.startup_time, ‘dd Mon “at” HH24:mi:ss’) instart_fmt,
di.instance_name inst_name,
di.db_name db_name,
s.snap_id snap_id,
to_char(s.end_interval_time, ‘dd Mon YYYY HH24:mi’) snapdat,
s.snap_level lvl
from dba_hist_snapshot s, dba_hist_database_instance di
where di.dbid = s.dbid
and di.instance_number = s.instance_number
and di.startup_time = s.startup_time
order by db_name, instance_name, snap_id;
–2、查看等待事件为行锁的session
select a.snap_id,
a.sql_id,
a.session_id,
a.session_serial#,
a.blocking_session,
a.blocking_session_serial#,
a.blocking_session_status
from DBA_HIST_ACTIVE_SESS_HISTORY a
where event like ‘%enq: TX - row lock contention%’
and snap_id between 58525 and 58569;
–3、查看阻塞回话,并统计阻塞次数
select a.blocking_session,
a.blocking_session_serial#,
count(a.blocking_session)
from DBA_HIST_ACTIVE_SESS_HISTORY a
where event like ‘%enq: TX - row lock contention%’
and snap_id between 58525 and 58569
group by a.blocking_session, a.blocking_session_serial#
order by 3 desc
–4、查看阻塞回话的sql_id和被阻塞的sql_id,条件为阻塞大于19次的
select distinct b.sql_id,c.blocked_sql_id,b.session_id,b.session_serial#,b.sql_opname,b.event,b.module,b.program,b.machine
from DBA_HIST_ACTIVE_SESS_HISTORY b,
(select a.sql_id as blocked_sql_id,
a.blocking_session,
a.blocking_session_serial#,
count(a.blocking_session)
from DBA_HIST_ACTIVE_SESS_HISTORY a
where event like ‘%enq: TX - row lock contention%’
and snap_id between 58525 and 58569
group by a.blocking_session, a.blocking_session_serial#,a.sql_id
having count(a.blocking_session) > 19
order by 3 desc) c
where b.session_id = c.blocking_session
and b.session_serial# = c.blocking_session_serial#
and b.snap_id between 58525 and 58569;

暂无图片 评论
暂无图片 有用 0
打赏 0
黄伟波

脚本的话可以参考这个

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
还原sql server 数据库怎样设置默认位置为D盘?
回答 1
已采纳
restoredatabase的时候指定move的位置即可。restoredatabasexxxfromyyywithmovexxxto‘xxx.mdf’
如何用命令sqlserver连接Oracle?
回答 1
[https://blog.csdn.net/weixin42996498/article/details/88717706]截图来自:(https://blog.csdn.net/weixin429
sqlserver 监控一般用什么工具啊?
回答 2
楼主你实现了嘛?
Postgresql怎么同步数据到SQL Server?
回答 1
ogg
Sqlserver 单表纪录数超过1000万,性能下降厉害。要代码改动量尽可能小,不停机。有人处理过类似的问题么。
回答 2
表的字段列出下。1000多万的数据量,正常不会太慢,顺便把SQL发出来
mssql 不用try catch 可以对类型转换异常做处理吗?
回答 1
https://www.jianshu.com/p/a0684fb61dc6 你可以看这个能帮到你不。
sql server CDC捕获更新能选择哪几列吗?
回答 1
SQLServer的CDC捕获更新是指可以捕获针对表中特定列的更改并将其保存在SQLServerCDC捕获表中。你可以选择更新的表或列,并且只有在特定的列上进行的更改才将被捕获。
SQLServer中有几种事务隔离级别?
回答 2
已采纳
SQLServer共支持6种事务隔离级别,分别为:ReadUncommitted(未提交读)、ReadCommitted(提交读)、RepeatableRead(可重复读)、Serializable(
clr types for Server 2019这个应用程序和SQL Server有什么联系吗?
回答 1
已采纳
官网有介绍SQLServerSystemCLRTypes包包含用于在SQLServer中实现几何、地理和层次结构ID类型的组件。此组件可单独从服务器安装,以允许客户端应用程序从服务器以外使用这些类型。
sql server 数据库表的大小才几个G,但是右键属性看数据的实际大小有40多个G是怎么原因?
回答 2
经常删除数据把?删除数据是不释放空间的。所以统计有差异。