ITPub博客

首页 > 数据库 > Oracle > Oracle查看数据库执行SQL信息

Oracle查看数据库执行SQL信息

原创 Oracle 作者:winnzheng 时间:2024-04-08 17:04:25 0 删除 编辑

查找某段时间执行过的SQL

#gv$sql 是每个version的sql一条记录

#记得排除掉自己

SELECT module,SQL_FULLTEXT,elapsed_time,LAST_ACTIVE_TIME,EXECUTIONS  FROM gv$sql WHERE  sql_text LIKE '%select wafer_key WaferKey, UPDATE_USER UserName from defect_wafer_brm where reclassify_date%' 

AND LAST_ACTIVE_TIME > to_date('2025-01-15 00:00:01','yyyy-mm-dd hh24:mi:ss')

AND LAST_ACTIVE_TIME < to_date('2025-01-16 23:00:00','yyyy-mm-dd hh24:mi:ss')

AND module NOT LIKE '%DBeaver%'

ORDER BY LAST_ACTIVE_TIME


#alter system flush shared_pool

# alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';

#elapsed_time 单位为微秒,是cputime和waittime的总和

#cpu_time就是包含解析、执行、获取数据的时间,如果cputime和elapsedtime相差较大则说明等待比较久

#gv$sql还需要除以executions以便获取平均时间

select module,sql_text,HASH_VALUE,elapsed_time/1000000 total_second,last_active_time,EXECUTIONS,ELAPSED_TIME/nvl(EXECUTIONS,1)/1000000 avg_second,cpu_time/1000/1000 from gv$sql where sql_id='0ysf4sb17gp92';


查找执行时间大于300s的SQL语句。

select a.sql_text,a.sql_id,

b.etime elapsed_time,

u.username,

c.user_id,c.sample_time,c.instance_number

from dba_hist_sqltext a,

(select sql_id,MAX(elapsed_time_delta/1000000) as etime 

from dba_hist_sqlstat 

where elapsed_time_delta/1000000 >=300 GROUP BY sql_id)b,

(SELECT SQL_ID,max(sample_time) sample_time,instance_number,user_id

FROM dba_hist_active_sess_history 

GROUP BY sql_id,instance_number,user_id) c,

dba_users u

where a.sql_id=b.sql_id

and b.sql_id=c.sql_id

and c.user_id=u.user_id

AND u.username NOT IN ('SYS','SYSTEM')

--AND a.SQL_ID='3achj6g0wd53m'

--AND REGEXP_LIKE(SQL_Text,'DEFECT_IMAGE','i') 

--AND a.COMMAND_TYPE = 6

AND SAMPLE_TIME >= to_date('2024-03-8 01:00:00','YYYY-MM-DD HH24:MI:SS')

AND SAMPLE_TIME <= TO_DATE('2024-03-8 23:00:00','YYYY-MM-DD HH24:MI:SS') 

order by sample_time desc,b.etime desc;


查看用户最近登录的时间

select MACHINE,s.logon_time,PROGRAM from gv$session s 

where MACHINE='ZHFA-CPJSLNK1\ZHFA-CPJSLNK1'

order by s.logon_time desc;


查看正在运行的SQL语句:

select a.sid,a.serial#,

a.paddr,a.machine,

nvl(a.sql_id,a.prev_sql_id) sql_id,

b.sql_text,b.sql_fulltext,

b.executions,

b.first_load_time,b.last_load_time,

b.last_active_time,

b.disk_reads,b.direct_writes,b.buffer_gets

from gv$session a,gv$sql b,gv$process c

where a.username='aaa'

--and a.status ='ACTIVE'

and c.addr=a.paddr

and a.sql_hash_value=b.hash_value


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70031606/viewspace-3011828/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: sqlserver 备份迁移
请登录后发表评论 登录
全部评论
Happy --开心 Appreciation --心怀感恩 Passion --激情四溢 Performance --出类拔萃 Young --充满活力

注册时间:2023-09-04

  • 博文量
    30
  • 访问量
    24388