iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle慢SQL监控脚本代码分享
  • 254
分享到

Oracle慢SQL监控脚本代码分享

2024-04-02 19:04:59 254人浏览 独家记忆
摘要

本篇内容主要讲解“oracle慢sql监控脚本代码分享”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle慢SQL监控脚本代码分享”吧! 线上Oracl

本篇内容主要讲解“oraclesql监控脚本代码分享”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle慢SQL监控脚本代码分享”吧!

线上Oracle准备实现类似Mysql slow query的监控脚本,把查询时间超出定值的SQL定时的发送邮件告警,实现过程记录如下:

主要思路是通过DBA_HIST的几个视图来获取每小时快照中慢SQL的情况,为了不影响线上环境,这里把脚本部署在了自己的监控端,通过DBLINK定期的抓取线上生产库的数据到监控数据库,并简单的处理后获得csv格式的报表,发送报表至邮箱。

定时脚本 每小时查询一次

00 * * * *  /opt/scripts/oracle/get_slow_query.sh

脚本内容如下

[oracle@59-mysql-Test ~]$ cat /opt/scripts/oracle/get_slow_query.sh

#!/bin/bash

errlog="/opt/scripts/oracle/sqlerror.log"

sq_data="/opt/scripts/oracle/slow_query_data.xls"

check_file="/opt/scripts/oracle/slowsql_check.log"

send_mail_check="/opt/scripts/oracle/send_mail.chk"

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1

export ORACLE_SID=oramon

export PATH=/usr/sbin:$PATH

export PATH=/u01/app/oracle/product/11.2.0/db_1/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export CLASSPATH=/u01/app/oracle/product/11.2.0/db_1/JRE:/u01/app/oracle/product/11.2.0/db_1/jlib:/u01/app/oracle/product/11.2.0/db_1/rdbms/jlib

cd /opt/scripts/oracle/

$ORACLE_HOME/bin/sqlplus -S sqmon/oracle @main  > ${errlog}

cat ${errlog} | grep -v 'Call completed.' | grep -v '' > ${check_file}

[ -s ${check_file} ] && /bin/mail -s "Oracle slow query check error" xxx@xxx.com < ${check_file}

cat ${sq_data} | grep -v '<' >${send_mail_check}

[ -s ${send_mail_check} ] && /bin/mail -a ${sq_data} -s "OracleDB find slow query,please check" xxx@xxx.com,xxx@xxx.com

[oracle@59-Mysql-Test oracle]$ cat main.sql

call  pro_get_slow_query();

set linesize 5000

set term off verify off feedback off pagesize 999

set markup html on entmap ON spool on prefORMat off

spool slow_query_data.xls

@get_tables.sql

spool off

exit

[oracle@59-Mysql-Test oracle]$ cat get_tables.sql

select sql_id,elapsed_time,cpu_time,iowait_time,gets,reads,rws,clwait_time,execs,elpe,Machine,username,dbms_lob.substr(sQt,4000) from DBA_ORA_SLOW_QUERY where elpe > 10 and machine not in ('rac01','rac02');

存储过程pro_get_slow_query内容如下

CREATE OR REPLACE PROCEDURE SQMON.pro_get_slow_query

AS

BEGIN

delete from local_dba_hist_sqltextas;

commit;

insert into local_dba_hist_sqltextas select * from dba_hist_sqltext@dg2;

commit;

insert into DBA_ORA_SLOW_QUERY_HISTORY select a.*,sysdate from DBA_ORA_SLOW_QUERY;

commit;

delete from DBA_ORA_SLOW_QUERY;

commit;

insert into  DBA_ORA_SLOW_QUERY

select v_1.sql_id,

       v_1.elapsed_time,

       v_1.cpu_time,

       v_1.iowait_time,

       v_1.gets,

       v_1.reads,

       v_1.rws,

       v_1.clwait_time,

       v_1.execs,

       v_1.elpe,

       v_2.machine,

       v_2.username,

       v_1.sqt

  from (select s.sql_id,

               elapsed_time / 1000000 elapsed_time,

               cpu_time / 1000000 cpu_time,

               iowait_time / 1000000 iowait_time,

               gets,

               reads,

               rws,

               clwait_time / 1000000 clwait_time,

               execs,

               st.sql_text sqt,

               elapsed_time / 1000000 / decode(execs, 0, null, execs) elpe

          from (select *

                  from (select sql_id,

                               sum(executions_delta) execs,

                               sum(buffer_gets_delta) gets,

                               sum(disk_reads_delta) reads,

                               sum(rows_processed_delta) rws,

                               sum(cpu_time_delta) cpu_time,

                               sum(elapsed_time_delta) elapsed_time,

                               sum(clwait_delta) clwait_time,

                               sum(iowait_delta) iowait_time

                          from dba_hist_sqlstat@HUBSDG2

                         where snap_id >=

                               (select max(snap_id) - 1

                                  from dba_hist_snapshot@DG2)

                           and snap_id <=

                               (select max(snap_id)

                                  from dba_hist_snapshot@DG2)

                         group by sql_id

                         order by sum(elapsed_time_delta) desc)

                 where rownum <= 20) s,

               local_dba_hist_sqltextas st

         where st.sql_id = s.sql_id) v_1

  left join (select distinct a.sql_id, a.machine, b.username

               from dba_hist_active_sess_history@DG2 a

               left join dba_users@DG2 b

                 on a.user_id = b.user_id

              where a.snap_id >=

                    (select max(snap_id) - 1 from dba_hist_snapshot@DG2)

                and a.snap_id <=

                    (select max(snap_id) from dba_hist_snapshot@DG2)) v_2

    on v_1.sql_id = v_2.sql_id

 order by elpe desc;

commit;

END;

/

上面标绿加粗部分的表不再列出,可以直接通过CTAS格式去创建即可。

到此,相信大家对“Oracle慢SQL监控脚本代码分享”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: Oracle慢SQL监控脚本代码分享

本文链接: https://www.lsjlt.com/news/59155.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle慢SQL监控脚本代码分享
    本篇内容主要讲解“Oracle慢SQL监控脚本代码分享”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle慢SQL监控脚本代码分享”吧! 线上Oracl...
    99+
    2024-04-02
  • linux下进程监控的shell脚本分享
    这篇文章主要介绍“linux下进程监控的shell脚本分享”,在日常操作中,相信很多人在linux下进程监控的shell脚本分享问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux下进程监控的shell脚...
    99+
    2023-06-09
  • oracle监控脚本语句
    查看碎片程度高的表SELECT segment_name table_name, COUNT(*) extents  FROM dba_segmentsWHERE owner NO...
    99+
    2024-04-02
  • 自动监控主从MySQL同步的SHELL脚本分享
    这篇文章主要介绍“自动监控主从MySQL同步的SHELL脚本分享”,在日常操作中,相信很多人在自动监控主从MySQL同步的SHELL脚本分享问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • python批量压缩图片的脚本代码分享
    本篇文章和大家了解一下python批量压缩图片的脚本代码分享。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。简介用Python批量压缩图片,把文件夹或图片直接拖入即可需要 NeedsPython 3Pillow (用pip...
    99+
    2023-06-15
  • 常用的Linux操作系统监控脚本代码有哪些
    这篇文章给大家分享的是有关常用的Linux操作系统监控脚本代码有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、查看主机网卡流量 代码如下:#!/bin/bash #network #Mike.Xu whi...
    99+
    2023-06-09
  • mysql源码安装的脚本分享
    这篇文章主要讲解了“mysql源码安装的脚本分享”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql源码安装的脚本分享”吧!代码如下:#!/bin/bashPATH=/bin:/sbin...
    99+
    2023-06-09
  • SHELL脚本监控JAVA进程的示例分析
    这篇文章主要为大家展示了“SHELL脚本监控JAVA进程的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SHELL脚本监控JAVA进程的示例分析”这篇文章吧。脚本内容:java_chec...
    99+
    2023-06-09
  • 最新热门脚本Autojs源码分享
    今天给大家分享一个包含最新50个热门脚本合集的源码,目前包括:矿牛守卫赚、热血星际、捉妖特工队、体重保卫战、炎兔、魔兽红包群、横扫太空、疯狂合体鸭、动物星球、猜猜什么歌等最热门的脚本...
    99+
    2024-04-02
  • 杀掉oracle在线用户的脚本分享
    这篇文章主要讲解了“杀掉oracle在线用户的脚本分享”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“杀掉oracle在线用户的脚本分享”吧!杀掉oracle在线用户,在oracle所在服务器...
    99+
    2023-06-09
  • linux下oracle rman备份脚本代码
    本篇内容介绍了“linux下oracle rman备份脚本代码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
  • 监控Oracle数据库的常用shell脚本怎么写
    本篇文章给大家分享的是有关监控Oracle数据库的常用shell脚本怎么写,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来...
    99+
    2024-04-02
  • 实现SQL分页的存储过程代码分享
    这篇文章主要介绍“实现SQL分页的存储过程代码分享”,在日常操作中,相信很多人在实现SQL分页的存储过程代码分享问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”实现SQL分页的...
    99+
    2024-04-02
  • Python selenium webdriver 基本使用代码分享
    目录前言一、Pip安装&创建Bowser对象1.Pip install selenium2.创建Bowser对象二、webdriver.ChromeOptions配置三、常用...
    99+
    2022-11-13
    Python selenium webdriver使用 Python selenium webdriver
  • 简单的SQL Server备份脚本代码怎么写
    本篇文章给大家分享的是有关简单的SQL Server备份脚本代码怎么写,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一般的情况下我们会选用SQ...
    99+
    2024-04-02
  • 【SQL中with的用法及代码经验分享】
    SQL中with的用法及代码经验分享 文章目录 SQL中with的用法及代码经验分享前言一、with的用法1.基本框架 二、业务员各项业务办理SQL监控统计项目分享1.口径说明2.业务员...
    99+
    2023-10-26
    sql 数据库 java
  • js前端代码异常监控的示例分析
    这篇文章将为大家详细讲解有关js前端代码异常监控的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。阅读目录什么是前端代码异常 window.onerror...
    99+
    2024-04-02
  • 批量挂马vbs脚本代码的示例分析
    这篇文章主要为大家展示了“批量挂马vbs脚本代码的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“批量挂马vbs脚本代码的示例分析”这篇文章吧。scan.vbe cscript ...
    99+
    2023-06-08
  • 分析C语言和SH脚本的杂交代码
    这篇文章主要讲解了“分析C语言和SH脚本的杂交代码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“分析C语言和SH脚本的杂交代码”吧!1 #if 02 echo "Hello fro...
    99+
    2023-06-03
  • 使用iconv批量改变文件编码的shell脚本分享
    这篇文章主要介绍“使用iconv批量改变文件编码的shell脚本分享”,在日常操作中,相信很多人在使用iconv批量改变文件编码的shell脚本分享问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”使用iconv...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作