Oracle10g中如何分析响应时间(2)

2025-08-15

when 'sql execute elapsed time' then

time_secs - plsql_time

when 'parse time elapsed' then

time_secs - hard_parse_time

else time_secs

end time_secs,

case db_stat_name

when 'sql execute elapsed time' then

round(100 * (time_secs - plsql_time)/db_time,2)

when 'parse time elapsed' then

round(100 * (time_secs - hard_parse_time)/db_time,2)

else round(100 * time_secs/db_time,2)

end pct_time from

(select stat_name db_stat_name,

round((value/1000000),3) time_secs

from sys.v_$sys_time_model

where stat_name not in('DB time','background elapsed time',

'background cpu time','DB CPU')),

(select round((value/1000000),3) db_time

from sys.v_$sys_time_model

where stat_name = 'DB time'),

(select round((value/1000000),3) plsql_time

from sys.v_$sys_time_model

where stat_name = 'PL/SQL execution elapsed time'),

(select round((value/1000000),3) hard_parse_time

from sys.v_$sys_time_model

where stat_name = 'hard parse elapsed time')

order by 2 desc;

DB_STAT_NAME TIME_SECS PCT_TIME

---------------------------------------------------------------- ---------- ----------

sql execute elapsed time 65.644 89.7

hard parse elapsed time 26.661 36.43

PL/SQL execution elapsed time 12.766 17.44

PL/SQL compilation elapsed time 6.353 8.68

soft parse time 2.15 2.94

connection management call elapsed time 1.084 1.48

hard parse (sharing criteria) elapsed time 0.448 0.61

repeated bind elapsed time 0.026 0.04

failed parse elapsed time 0.009 0.01

hard parse (bind mismatch) elapsed time 0.002 0

RMAN cpu time (backup/restore) 0 0

inbound PL/SQL rpc elapsed time 0 0

sequence load elapsed time 0 0

Java execution elapsed time 0 0

failed parse (out of shared memory) elapsed time 0 0

可以在V$SYS_TIME_MODEL视图中找到相应的主要花费时间处理的部分,然后就可以根据这些来对数据库进行相应的调整。

除了活动时间,DBA也还想知道整体的等待时间。在Oracle10g数据库之前,

DBA必须查看单独的等待事件来找出等待和瓶颈,现在Oracle10g数据库提供一个等待的概要机制。

select WAIT_CLASS,

TOTAL_WAITS,

round(100 * (TOTAL_WAITS/SUM_WAITS),2) PCT_WAITS,

ROUND((TIME_WAITED/100),2) TIME_WAITED_SECS,

round(100 * (TIME_WAITED/SUM_TIME),2) PCT_TIME from

(select WAIT_CLASS,

TOTAL_WAITS,

TIME_WAITED

from V$SYSTEM_WAIT_CLASS

where WAIT_CLASS != 'Idle'),

(select sum(TOTAL_WAITS) SUM_WAITS,

sum(TIME_WAITED) SUM_TIME

from V$SYSTEM_WAIT_CLASS

where WAIT_CLASS != 'Idle')

order by 5 desc;

WAIT_CLASS TOTAL_WAITS PCT_WAITS TIME_WAITED_SECS PCT_TIME

---------------------- ----------- ---------- ---------------- ----------

User I/O 5748 61.71 67.57 65.79

Other 182 1.95 16.85 16.41

System I/O 2975 31.94 11.27 10.97

Concurrency 114 1.22 6.76 6.58

Commit 61 0.65 0.22 0.21

Network 233 2.5 0.03 0.03

Application 2 0.02 0 0

这样就能非常容易的找出大部分的整体等待时间。如同响应时间数据一样, 我们可以用下面的查询来及时回顾最新的一个小时等待类型:

select a.sid,

b.username,

a.wait_class,

a.total_waits,

round((a.time_waited/100),2) time_waited_secs

from sys.v_$session_wait_class a,

sys.v_$session b

where b.sid = a.sid and

b.username is not null and

a.wait_class != 'Idle'

order by 5 desc;

SID USERNAME WAIT_CLASS TOTAL_WAITS TIME_WAITED_SECS

----- -------------- -------------- ----------- ----------------

38 SYS User I/O 22 0.19

48 SYS User I/O 15 0.12

38 SYS Network 21 0.01

48 SYS Network 24 0

38 SYS Application 2 0

这个时候,就可以检查标准的单独等待事件就如在以前版本的Oracle数据库中查询V$SESSION_WAIT和V$SESSION_EVENT视图。

在Oracle10g数据库中DBA还将可以找出新的等待类型在这两张视图中。 如果需要找出以前哪个会话登录并且消耗了大部分的资源,

你可以使用下面的查询,下面的例子是查找午夜12点到5点的数据库活动,并且包括用户的I/O等待。

select sess_id, username, program, wait_event, sess_time,

round(100 * (sess_time/total_time),2) pct_time_waited from

(select a.session_id sess_id,

decode(session_type,'background',session_type,c.username) username, a.program program, b.name wait_event,

sum(a.time_waited) sess_time from sys.v_$active_session_history a, sys.v_$event_name b, sys.dba_users c

where a.event# = b.event# and a.user_id = c.user_id and

sample_time > '22-JAN-07 12:00:00 AM' and sample_time < '22-JAN-07 05:00:00 AM' and


Oracle10g中如何分析响应时间(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2024年口腔助理医师辅导:牙齿预备的常见问题

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219