通过shell脚本定位性能sql和生成报告
发布日期:2021-09-08 15:09:15
浏览次数:10
分类:技术文章
本文共 2729 字,大约阅读时间需要 9 分钟。
oracle的sql monitor是一个很有用的工具集。但是通过sql命令和反复去调用dbms_tune来传入参数等等操作感觉挺费事的。
可以通过如下的脚本来定位sql monitor中的性能sql,发现一些潜在的性能问题。这个脚本可以定位正在sql monitor监控范围内的sql语句。MONITOR_OWNER=`sqlplus -silent $DB_CONN_STR@$SH_DB_SID < set pages 100set linesize 200col status format a20col username format a15col module format a20col program format a25col sql_id format a20col sql_text format a20select sql_id,STATUS , USERNAME , MODULE , PROGRAM, substr(SQL_TEXT,0,20) sql_text from v\\$sql_monitor where username =upper('$1') group by sql_id,STATUS , USERNAME , MODULE , PROGRAM, substr(SQL_TEXT,0,20); exit; END` if [ -z "$MONITOR_OWNER" ]; then echo "no object exists, please check again" exit 0 else echo '*******************************************' echo " $MONITOR_OWNER " echo '*******************************************'fi
脚本运行结果如下,可以显示sql_id和状态,还有简单的sql语句。
尤其可以重点关注那些正在执行的语句。SQL_ID STATUS USERNAME MODULE PROGRAM SQL_TEXT -------------------- -------------------- --------------- -------------------- ------------------------- -------------------- 7u9gsk798bvrp DONE (ALL ROWS) TEST_USER JDBC Thin Client JDBC Thin Client SELECT AA.DATA_GROcjqdgd14xjwjm DONE (ALL ROWS) TEST_USER JDBC Thin Client JDBC Thin Client SELECT TO_CHAR (SUBS2zymmn3s4xn1k DONE (ALL ROWS) TEST_USER JDBC Thin Client JDBC Thin Client SELECT nrg."Cyc1hg2wcuapy3y3 EXECUTING TEST_USER JDBC Thin Client JDBC Thin Client select d1_run_reque
如果要生成sql monitor报告。
可以采用如下的脚本MONITOR_OWNER=`sqlplus -silent $DB_CONN_STR@$SH_DB_SID < set pages 100set linesize 200col status format a20col username format a15col module format a20col program format a25col sql_id format a20col sql_text format a20select sql_id,STATUS , USERNAME , MODULE , PROGRAM, substr(SQL_TEXT,0,20) sql_text from v\\$sql_monitor where sql_id='$1' group by sql_id,STATUS , USERNAME , MODULE , PROGRAM, substr(SQL_TEXT,0,20) ; exit; END` if [ -z "$MONITOR_OWNER" ]; then echo "no object exists, please check again" exit 0 else echo '*******************************************' echo " $MONITOR_OWNER " echo '*******************************************'fi sqlplus -silent $DB_CONN_STR@$SH_DB_SID < set long 99999set pages 0set linesize 200col status format a20col username format a30col module format a20col program format a20col sql_id format a20col sql_text format a50col comm format a200set long 999999SELECT dbms_sqltune.report_sql_monitor(sql_id => '$1',report_level => 'ALL',type=>'TEXT') comm FROM dual; EOF
本文转自ICT时空dbasdk的博客,原文链接:,如需转载请自行联系原博主。
转载地址:https://blog.csdn.net/weixin_34326429/article/details/90161987 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月12日 09时03分11秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
AcWing - 扩展欧几里得算法(扩欧)
2019-04-28
AcWing - 高斯消元解线性方程组(高斯消元)
2019-04-28
AcWing - 求组合数 I(递推)
2019-04-28
AcWing - 求组合数 II(预处理&逆元)
2019-04-28
AcWing - 求组合数 III(lucas&逆元)
2019-04-28
AcWing - 求组合数 IV(分解质因数)
2019-04-28
AcWing - 满足条件的01序列(组合数学&卡特兰数)
2019-04-28
AcWing - 快速排序(快排)
2019-04-28
AcWing - 归并排序(归排)
2019-04-28
AcWing - 数的范围(二分)
2019-04-28
AcWing - 数的三次方根(二分)
2019-04-28
AcWing - 高精度加法(大数加法)
2019-04-28
AcWing - 高精度减法(大数减法)
2019-04-28
AcWing - 高精度乘法(大数乘法)
2019-04-28
AcWing - 高精度除法(大数除法)
2019-04-28
AcWing - 前缀和(前缀和)
2019-04-28
AcWing - 子矩阵的和(二维前缀和)
2019-04-28
AcWing - 差分(一维差分)
2019-04-28
AcWing - 最长连续不重复子序列(双指针)
2019-04-28
AcWing - 数组元素的目标和(双指针)
2019-04-28