返回顶部
首页 > 资讯 > 数据库 >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://lsjlt.com/news/59155.html(转载时请注明来源链接)

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

猜你喜欢
  • Oracle慢SQL监控脚本代码分享
    本篇内容主要讲解“Oracle慢SQL监控脚本代码分享”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle慢SQL监控脚本代码分享”吧! 线上Oracl...
    99+
    2024-04-02
  • Mysql sql慢查询监控脚本代码实例
    1、修改my.cnf #整体的效果,全局开启表和日志文件都写,但是对于general_log只写表,对于slow_query_log,表和日志文件都记录。 general_log=1#开启mysql执行sql的日...
    99+
    2022-05-12
    mysql sql 慢查询 监控脚本
  • CPU负载监控脚本代码
    #!/bin/bashload=`uptime`shijian=`date +%Y-%m-%d-%T`file=cpustatus.txttouch $fileall=`cat $file |wc -l`...
    99+
    2022-06-04
    负载 脚本 代码
  • shell监控脚本 准备工作分享
    1 准备监控机 linux 系统,普通服务器即可,要求: 安装ssh 客户端,如果要发送手机短信,还需准备短信猫并且安装 gnokii或者 gammu 2 编辑ssh_config 配置文件 /etc/s...
    99+
    2022-06-04
    准备工作 脚本 shell
  • ORACLE DATAGUARD 监控脚本
    使用perl来监控ORACLE DATAGUARD脚本#!/usr/bin/perl use strict; use warnings; use DBI; &nbs...
    99+
    2024-04-02
  • linux进程监控shell脚本代码
    为确保php页面在后台运行,写了一个监控脚本,假设程序异常退出,那么可以自动重启。 shell脚本/usr/local/scripts/receve.sh内容: #!/bin/bash #funtion...
    99+
    2022-06-04
    脚本 进程 代码
  • 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
  • SHELL脚本监控JAVA进程的代码
    脚本内容:java_check.sh #! /bin/bash # if [ -z `pidof java` ]; then echo -e `date +%Y-%m-%d` `date...
    99+
    2022-06-04
    脚本 进程 代码
  • 五个常用的Linux监控脚本代码
    1、查看主机网卡流量 #!/bin/bash#network#Mike.Xuwhile : ; do time='date +%m"-"%d" "%k":"%M' day='date ...
    99+
    2022-06-04
    脚本 常用 代码
  • shell监控linux系统进程创建脚本分享
    #!/bin/shwhile truedo ps ax -o command | sort | uniq > 1.txt usleep 100000 ps ax -o command | sort ...
    99+
    2022-06-04
    脚本 进程 系统
  • 自动监控主从MySQL同步的SHELL脚本分享
    这篇文章主要介绍“自动监控主从MySQL同步的SHELL脚本分享”,在日常操作中,相信很多人在自动监控主从MySQL同步的SHELL脚本分享问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • SHELL脚本监控oracle alert日志
    监控alert 日志思路:按alert日志行号取当前最后一行和上一次扫描的行对比 大于等于上一次扫描的行 就从上一次扫描的行开始 扫描到最后一行#!/bin/bash scriptHome=`dirname...
    99+
    2024-04-02
  • 分享一个入门级可控多线程shell脚本代码
    说到shell可控多线程,网上分享的大部分是管道控制的方案。这种方案,张戈博客也曾经实战并分享过一次:《Shell+Curl网站健康状态检查脚本,抓出中国博客联盟失联站点》,感兴趣的朋友可以看看。 分享一个...
    99+
    2022-06-04
    多线程 入门级 脚本
  • 监控oracle数据库 以及oracle监听 shell脚本
    文本格式:#!/bin/bash#Author:wangergui Email:291131893@qq.com Date:2016-10-10#Release 1.0#Function: check o...
    99+
    2024-04-02
  • 几个常用的Linux操作系统监控脚本代码
    本文介绍了几个常用的Linux监控脚本,可以实现主机网卡流量、系统状况、主机磁盘空间、CPU和内存的使用情况等方面的自动监控与报警。根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性。...
    99+
    2022-06-04
    几个 脚本 操作系统
  • 监控网站是否可以正常打开的Shell脚本分享
    最近刚好需要测试一下新建站的稳定性,所以写了个SHELL脚本放到本机(最近换了mac本),能够实时查看你需要监控的WEB页面状态,并发送到指定邮箱. 这里赞一下OS X自带有crontab计划任务,可以直接...
    99+
    2022-06-04
    脚本 网站 Shell
  • 一个监控LINUX目录和文件变化的Shell脚本分享
    最近看到群里有人聊到他们的服务器最近被挂马,然后想利用一个脚本能够实时监控web目录下文件的变化,也就是对该目录的增删改操作都会记录到相应日志下。 当时感觉这个功能的确实有点意思,所以网上查阅了些资料,自己...
    99+
    2022-06-04
    脚本 文件 目录
  • mysql源码安装脚本分享
    #!/bin/bashPATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATHclear;Sys...
    99+
    2022-06-04
    脚本 源码 mysql
  • python批量压缩图片的脚本代码分享
    本篇文章和大家了解一下python批量压缩图片的脚本代码分享。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。简介用Python批量压缩图片,把文件夹或图片直接拖入即可需要 NeedsPython 3Pillow (用pip...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作