我从系统登录了我的应用程序。我从一个用户执行刷新并复制粘贴 从另一个。 refresh主要有一组select查询,而copy paste则有更多的insert查询。 刷新这样做需要一分钟或更短的时间来执行,但是当从其他系统完成复制粘贴时,需要花费很多时间或等待复制粘贴完成,然后才完成。
我正在使用oracle 10g数据库。我一直在使用oracle sql develepor(监控会话)来查看实时查询,但却无法有效地使用它。
你能告诉我:
答案 0 :(得分:0)
如何查看有冲突的查询
在企业版中,您可以使用企业管理器来跟踪缓冲会话和参与的查询。 (Enterprise Manager for 10g documentation)
您也可以为此编写SQL查询,如本文详述:Tracking Oracle blocking sessions
文章中的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;
如何查看variuos查询获取的锁。
此查询将告诉您会话ID(来自Oracle forum):
设置lineize 150; 开头; col sid_serial形式a13 col ora_user for a15; col对象名为a35; col object_type for a10; col lock_mode for a15; col last_ddl for a8; col的状态为a10;
打破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
我可以使用的任何其他建议或任何其他方法或工具
好吧,谷歌想到了......