暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 如何查看所有需要5秒以上的sql_id

askTom 2017-08-05
382

问题描述

嗨,汤姆,

在我们的OLTP数据库中,业务要求是响应应在5秒内发送,超过此范围的任何内容都被视为延迟。我们已经为旅程中的所有sql制定了固定计划,理想情况下,它们不应该超过0.5秒。但是每天都会发生奇怪的事情,并且延迟了5-10个请求,它仅在1分钟或30秒的时间内发生,然后恢复正常。
所以我们需要查看或工具,它可以找到所有这样的sql,花费超过5秒。V $ sql_monitor仅捕获超过一秒钟的基于cpu和io的查询。

至少我们需要跟踪架构级别的任何选项。

谢谢,
Nitin

专家解答

一些选项

1) v $ 活动 _ 会话 _ 历史

选择sql_id,sql_exec_id,计数 (*)
从v $ 活动 _ 会话 _ 历史
按sql_id、sql_exec_id分组
计数 (*) >= 5

因为我们每秒取一个样本,所以计数大致等于经过的时间。

2) v $ sql

选择sql_id,elapsed_time,执行
从v $ sql
其中elapsed_time/nullif (执行,0)/1000000 > 5

这些不能保证精确,因为我们正在平均和/或抽样,但绝对足以挑选候选人进行调查
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论