shell sqlplus执行sql文_如何通过 Shell 监控异常等待事件和活跃会话

本文介绍了如何使用 Shell 脚本结合 SQLPlus 定时监控 Oracle 数据库的异常等待事件和活跃会话。通过示例脚本展示如何每隔5秒或10秒输出监控结果,以及如何使用 `watch` 命令实时查看。此外,还分享了一个清理历史日志的 Shell 脚本,以及多个推荐的 Oracle 学习资源网站。
摘要由CSDN通过智能技术生成

03bcbf1152b47e34b6748d31b95e0406.gif

作者 | JiekeXu

来源 | JiekeXu之路(ID: JiekeXu_IT)

转载请联系授权 | (微信ID:xxq1426321293)

大家好,我是 JiekeXu,分开这么久很高兴又和大家见面了,今天分享下如何通过 Shell 监控异常等待事件和活跃会话 。 本文首发于微信公众号【JiekeXu之路】,欢迎点击上方蓝字关注我吧!

前几天有网友在墨天轮平台上问到“如何写一个定时任务监控用户会话连接数”的问题,由于当时比较忙,回答的比较简单也比较匆忙。最近也因为公司新项目老是加班,运维保障,安装 RAC、搭建 DG 、故障处理等等,占据了很大个人时间,休息充电的时间难免减少了很多,今日利用闲暇时间,来继续说一说监控会话相关的这个话题。

通常我们平时都是通过运行 SQL 语句直接查询 V$SESSION 视图得到结果,然后直接输出到屏幕上,具体的 SQL 如下:

--- 查看用户会话select username,count(username) from gv$session where username is not null group by username order by 2;--- 查看异常等待事件select inst_id,sid,serial#,program,sql_id,event,seconds_in_wait "wait(s)" from gv$sessionwhere type<>'BACKGROUND' and wait_class <> 'Idle' order by inst_id;--- 查看活跃会话数select inst_id,status,count(*) from gv$session where type<> 'BACKGROUND' group by inst_id,status order by 3;

今天主要是通过 Shell 循环等手段来实现:

[oracle@JiekeXu ~]$ more wait_event.shwhile truedoDATE=`date +%Y-%m-%d`sqlplus "/ as sysdba" << EOF | grep -A5 EVENT | grep -v Version | grep -v Copyright | grep -v Enterprise | grep -v '>'#sqlplus "/ as sysdba" 1>>/home/oracle/wait_history_$DATE.log 2>&1 <'set termout offset linesize 250 pagesize 100col inst_id for 9col sid for 9999col serial# for 99999column program format a30column event format a35col "wait(s)" for 9999--set timing onselect inst_id ,sid,serial#,program,sql_id,event,seconds_in_wait "wait(s)" from gv\$sessionwhere type<>'BACKGROUND' and wait_class <> 'Idle' order by inst_id;exitEOFsleep 5done

注:gv\$session 中需要用 “\” 转义 “$” 符号,grep -A5 EVENT 这个只是过滤掉 SQLPlus 登陆退出的提示,以便更友好的输出结果。 每隔 5 秒运行此脚本,便可以输出异常的等待事件到屏幕上,通过 While True 循环然后等待 5 s 继续执行达到监控效果,如下是我的测试环境执行结果:


 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值