如何查看有冲突的查询
在Enterprise Edition中,您可以使用Enterprise Manager来跟踪阻塞会话和参与的查询。( Enterprise Manager for 10g 文档)
您还可以为此编写 SQL 查询,如本文所述:跟踪 Oracle 阻塞会话
文章中的 SQL(列出阻塞会话):
select blocking_session, sid, serial#, wait_class, seconds_in_wait
from v$session
where blocking_session is not NULL
order by blocking_session;
列出活动查询(来自Ask Anantha):
SELECT a.USERNAME, a.STATUS, b.sql_text
FROM V$SESSION a
INNER JOIN V$SQLAREA b ON a.SQL_ADDRESS= b.ADDRESS;
如何查看各种查询获取的锁。
此查询将告诉您会话 ID(来自Oracle 论坛):
设置 linesize 150;迎头赶上;col sid_serial form a13 col ora_user for a15; a35 的 col 对象名称;a10 的 col 对象类型;a15 的 col lock_mode;col last_ddl for a8; a10 的 col 状态;
在 sid_serial 上中断;
SELECT l.session_id||','||v.serial# sid_serial,
l.ORACLE_USERNAME ora_user,
o.object_name,
o.object_type,
DECODE(l.locked_mode,
0, 'None',
1, 'Null',
2, 'Row-S (SS)',
3, 'Row-X (SX)',
4, 'Share',
5, 'S/Row-X (SSX)',
6, 'Exclusive',
TO_CHAR(l.locked_mode)
) lock_mode,
o.status,
to_char(o.last_ddl_time,'dd.mm.yy') last_ddl
FROM dba_objects o, gv$locked_object l, v$session v
WHERE o.object_id = l.object_id
and l.SESSION_ID=v.sid
order by 2,3;
完成一个查询需要多长时间
您可以使用SearchOracle中的此 SQL 对其进行跟踪
SELECT *
FROM
(select
username,opname,sid,serial#,context,sofar,totalwork ,round(sofar/totalwork*100,2) "% Complete"
from v$session_longops)
WHERE "% Complete" != 100
我可能使用的任何其他建议或任何其他方法或工具
好吧,谷歌浮现在脑海...