gpt4 book ai didi

oracle - 如何检查 Oracle 数据库是否存在长时间运行的查询

转载 作者:行者123 更新时间:2023-12-03 04:55:37 29 4
gpt4 key购买 nike

我的应用程序使用 Oracle 数据库,速度缓慢或似乎完全停止。

如何找出哪些查询成本最高,以便我可以进一步调查?

最佳答案

这显示当前“ACTIVE”的 SQL:-

select S.USERNAME, s.sid, s.osuser, t.sql_id, sql_text
from v$sqltext_with_newlines t,V$SESSION s
where t.address =s.sql_address
and t.hash_value = s.sql_hash_value
and s.status = 'ACTIVE'
and s.username <> 'SYSTEM'
order by s.sid,t.piece
/

这显示了锁。有时事情进展缓慢,但这是因为它被阻塞等待锁:

select
object_name,
object_type,
session_id,
type, -- Type or system/user lock
lmode, -- lock mode in which session holds lock
request,
block,
ctime -- Time since current mode was granted
from
v$locked_object, all_objects, v$lock
where
v$locked_object.object_id = all_objects.object_id AND
v$lock.id1 = all_objects.object_id AND
v$lock.sid = v$locked_object.session_id
order by
session_id, ctime desc, object_name
/

这对于查找长操作(例如全表扫描)来说是一个很好的选择。如果是因为大量空头操作,则不会显示任何内容。

COLUMN percent FORMAT 999.99 

SELECT sid, to_char(start_time,'hh24:mi:ss') stime,
message,( sofar/totalwork)* 100 percent
FROM v$session_longops
WHERE sofar/totalwork < 1
/

关于oracle - 如何检查 Oracle 数据库是否存在长时间运行的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/622289/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com