定期自动统计大表执行情况

server/2025/2/24 2:15:42/

一、创建用户并赋权

create user dbtj identified by oracle default tablespace OGGTBS;grant connect,resource to dbtj;grant select any dictionary to dbtj;grant create job to dbtj;grant manage scheduler to dbtj;

二、创建存储表

1、连接到新建用户

conn dbtj/oracle

2、按大表2千万为维度,统计出大表,再根据大表找到最近一天的sql,统计其执行效率(毫秒),创建数据存储表

create table dbtj.dbtj_tab asselect to_char(b.end_interval_time, 'yyyy-mm-dd-hh24') as datet,SQL_ID,sum(a.executions_delta) exec_d,sum(a.buffer_gets_delta) buffer_d,sum(a.disk_reads_delta) disk_d,round(sum(a.elapsed_time_delta / 1000000), 3) et_d,round(decode(sum(a.executions_delta),0,sum(a.elapsed_time_delta),sum(a.elapsed_time_delta / 1000) /sum(a.executions_delta)),2) et_onetimefrom dba_hist_sqlstat a, dba_hist_snapshot bwhere a.snap_id = b.snap_idand a.instance_number = b.instance_numberand a.sql_id IN(SELECT DISTINCT (SQL_ID)FROM GV$SQL_PLAN SPWHERE (sp.OBJECT_OWNER, sp.OBJECT_NAME) in(select owner, table_namefrom dba_tableswhere num_rows >= 20000000and owner not in ('SYS', 'SYSTEM')))AND B.end_interval_time >= SYSDATE - 6/24group by to_char(b.end_interval_time, 'yyyy-mm-dd-hh24'), SQL_IDhaving(sum(a.executions_delta)) > 0order by 1;

三、创建存储过程,将第二步的查询结果插入到数据表dbtj_tab

create or replace procedure dbtj_procasbegininsert into dbtj.dbtj_tabselect to_char(b.end_interval_time, 'yyyy-mm-dd-hh24') as datet,SQL_ID,sum(a.executions_delta) exec_d,sum(a.buffer_gets_delta) buffer_d,sum(a.disk_reads_delta) disk_d,round(sum(a.elapsed_time_delta / 1000000), 3) et_d,round(decode(sum(a.executions_delta),0,sum(a.elapsed_time_delta),sum(a.elapsed_time_delta / 1000) /sum(a.executions_delta)),2) et_onetimefrom dba_hist_sqlstat a, dba_hist_snapshot bwhere a.snap_id = b.snap_idand a.instance_number = b.instance_numberand a.sql_id IN(SELECT DISTINCT (SQL_ID)FROM GV$SQL_PLAN SPWHERE (sp.OBJECT_OWNER, sp.OBJECT_NAME) in(select owner, table_namefrom dba_tableswhere num_rows >= 20000000and owner not in ('SYS', 'SYSTEM')))AND B.end_interval_time >= SYSDATE - 6/24group by to_char(b.end_interval_time, 'yyyy-mm-dd-hh24'), SQL_IDhaving(sum(a.executions_delta)) > 0order by 1;commit;end;

四、创建定时任务,每天1、7、13、19 统计

begindbms_scheduler.create_job(job_name =>'dbtj_job',job_type =>'STORED_PROCEDURE',JOB_ACTION =>'dbtj_proc',START_DATE =>TO_TIMESTAMP_TZ('2022-07-11 22:10:00 +8:00','YYYY-MM-DD HH24:MI:SS TZH:TZM'),REPEAT_INTERVAL =>'FREQ=DAILY;BYHOUR=01,07,13,19',ENABLED =>TRUE);END;

五、测试

begindbtj_proc;end;begindbms_scheduler.enable('dbtj_job');end;begindbms_scheduler.run_job('dbtj_job');end;BEGINDBMS_SCHEDULER.DROP_JOB('dbtj_job');END;select * from dbtj.dbtj_tab;

六、结果展示
 

dbtj.dbtj_tabselect datet as "时间",sql_id,exec_d as "执行次数",et_onetime as "每次耗时(毫秒)" from dbtj.dbtj_tab where datet >= to_char(sysdate-1,'yyyy-mm-dd-hh24') order by 1;


http://www.ppmy.cn/server/170240.html

相关文章

JAVAWeb之Servlet学习

认识 Servlet 就是 Sun 公司开发动态 Web 的一门技术 Sun 在这些 API (Application Programming Interface,应用程序接口)中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤…

【Leetcode 每日一题 - 扩展】1512. 好数对的数目

问题背景 给你一个整数数组 n u m s nums nums。 如果一组数字 ( i , j ) (i,j) (i,j) 满足 n u m s [ i ] n u m s [ j ] nums[i] nums[j] nums[i]nums[j] 且 i < j i < j i<j&#xff0c;就可以认为这是一组 好数对 。 返回好数对的数目。 数据约束 1 ≤ n …

C#素数判定算法

在数字的奇妙宇宙中&#xff0c;素数就像是一群神秘的 “纯净使者”。它们只能被 1 和自身整除&#xff0c;简单纯粹&#xff0c;不与其他数字 “纠缠不清”。那我们如何从茫茫数海中&#xff0c;精准地识别出这些 “纯净使者” 呢&#xff1f;这就需要用到素数判定算法啦&…

[Android]如何让APP快速被系统杀掉

如果你需要在开发过程中快速测试你的应用在被系统杀掉后的恢复情况&#xff0c;可以通过以下几种方式来强制杀掉你的应用&#xff1a; 1. 使用 Android Studio 的 Device File Explorer 打开 Android Studio。 选择 View -> Tool Windows -> Device File Explorer。 在…

Golang深度学习

前言 在2009年&#xff0c;Google公司发布了一种新的编程语言&#xff0c;名为Go&#xff08;或称为Golang&#xff09;&#xff0c;旨在提高编程效率、简化并发编程&#xff0c;并提供强大的标准库支持。Go语言的设计者们希望通过Go语言能够解决软件开发中的一些长期存在的问…

理解都远正态分布中指数项的精度矩阵(协方差逆矩阵)

之前一直不是很理解这个公式为什么用这个精度矩阵&#xff0c;为什么这么巧合&#xff0c;为什么是它&#xff0c;百思不得其解&#xff0c;最近有了一些新的理解&#xff1a; 1. 这个精度矩阵相对公平合理的用统一的方式衡量了变量间的关系&#xff0c;但是如果是公平合理的衡…

第七章:JavaScript性能优化实战

JavaScript性能直接关乎网页交互体验&#xff0c;优化工作涵盖代码结构规整、执行效率提升以及内存管理等方面&#xff0c;对提升页面流畅度极为关键。 7.1 优化代码结构 7.1.1 函数节流与防抖 在处理频繁触发的事件时&#xff0c;函数节流&#xff08;Throttle&#xff09;…

android13修改系统Launcher不跟随重力感应旋转

android13系统中需要修改系统原生Launcher不跟随重力感应旋转。 通过代码查找发现packages/apps/Launcher3/src/com/android/launcher3/states/RotationHelper.java中存在一个函数getAllowRotationDefaultValue&#xff0c;用于获取是否允许旋转的默认值。 public static bo…