oracle查看实际,如何查看正在执行的实际Oracle SQL语句

在数据字典端有很多工具可以使用,如

Schema Spy

要查看正在运行的查询,请查看sys.v_ $ sql和sys.v_ $ sqltext视图。您还需要访问sys.all_users

需要注意的是,使用参数的查询将会显示一次,例如

and TABLETYPE=’:b16’

而其他不会多次显示,如:

and TABLETYPE=’MT’

这些表的操作示例是以下SQL查找前20个磁盘盘。您可以通过删除WHERE rownum< = 20来更改此值,也可以添加ORDER BY模块。你经常发现模块会告诉你什么软件运行查询(例如:“TOAD 9.0.1.8”,“JDBC Thin Client”,“runcbl @ somebox(TNS V1-V3)”等)

SELECT

module,

sql_text,

username,

disk_reads_per_exec,

buffer_gets,

disk_reads,

parse_calls,

sorts,

executions,

rows_processed,

hit_ratio,

first_load_time,

sharable_mem,

persistent_mem,

runtime_mem,

cpu_time,

elapsed_time,

address,

hash_value

FROM

(SELECT

module,

sql_text ,

u.username ,

round((s.disk_reads/decode(s.executions,0,1, s.executions)),2) disk_reads_per_exec,

s.disk_reads ,

s.buffer_gets ,

s.parse_calls ,

s.sorts ,

s.executions ,

s.rows_processed ,

100 - round(100 * s.disk_reads/greatest(s.buffer_gets,1),2) hit_ratio,

s.first_load_time ,

sharable_mem ,

persistent_mem ,

runtime_mem,

cpu_time,

elapsed_time,

address,

hash_value

FROM

sys.v_$sql s,

sys.all_users u

WHERE

s.parsing_user_id=u.user_id

and UPPER(u.username) not in ('SYS','SYSTEM')

ORDER BY

4 desc)

WHERE

rownum <= 20;

注意,如果查询是长的..你将必须查询v_ $ sqltext。这存储整个查询。您将必须查找ADDRESS和HASH_VALUE并拾取所有的片段。例如:

SELECT

*

FROM

sys.v_$sqltext

WHERE

address = 'C0000000372B3C28'

and hash_value = '1272580459'

ORDER BY

address, hash_value, command_type, piece

;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值