oracle性能问题排查,性能测试Oracle消耗排查记录
1.耗費CPU或者是執(zhí)行計劃較多的sql語句的查詢
SELECT T.CPU_TIME,--語句解析和執(zhí)行的cpu時間
T.EXECUTIONS,--從加入緩存后的執(zhí)行次數(shù)
T.ELAPSED_TIME,--語句解析和執(zhí)行的時間
T.SORTS,
T.PARSE_CALLS,--軟硬解析次數(shù)
T.OPTIMIZER_COST,--優(yōu)化器計算的成本
T.SQL_TEXT--執(zhí)行的sql語句
FROM SYS.V_$SQL T
WHERE T.OPTIMIZER_COST IS NOT NULL
AND T.EXECUTIONS > 500
ORDER BY T.OPTIMIZER_COST DESC;
2.獲取耗費資源最多的sql語句
select * from
(select b.username username, a.DISK_READS reads, a.EXECUTIONS exec, a.DISK_READS/decode(a.EXECUTIONS,0,1,a.EXECUTIONS) rds_exec_ratio, a.SQL_TEXT statement
from sys.v_$sqlarea a, sys.dba_users b
where a.PARSING_USER_ID = b.user_id
and (b.username = '' or b.username = '')
and a.DISK_READS >= 50 ) t
where t.rds_exec_ratio >= 1
order by t.rds_exec_ratio desc;
3.查看當前會話信息
通過plsql中的工具欄中的會話,查看當前活躍會話,通過查看會話當前執(zhí)行sql,判斷性能瓶頸問題
查詢當前活躍會話sql:
select * from SYS.V_$SESSION t where t.STATUS='ACTIVE' and osuser='' and type='' and username=''
當前會話游標信息:
select * from v$open_cursor where sid = :sid;
當前會話sql信息:
select sql_text from v$sqltext_with_newlines where address = hextoraw(:sql_address) and hash_value = :sql_hash_value order by piece / concatenate /
當前會話耗費信息:
select names.name, stats.statistic#, stats.value from v$sesstat stats, v$statname names where stats.sid = :sid and names.Statistic# = stats.Statistic# order by stats.statistic#
當前會話鎖信息:
select l.*, o.owner object_owner, o.object_Name from sys.all_objects o, v$lock l where l.sid = :sid and l.type = 'TM' and o.object_id = l.id1
根據(jù)會話查看當前sql的消耗:
SELECT T.SID,
T1.SQL_TEXT,
T1.CPU_TIME,
T1.EXECUTIONS,
T1.OPTIMIZER_COST,
T1.ELAPSED_TIME,
T1.ELAPSED_TIME / T1.EXECUTIONS AS UNIT_ELAPSED_TIME,
T1.CPU_TIME / T1.EXECUTIONS AS UNIT_CPU_TIME
FROM SYS.V$SESSION T, SYS.V$SQL T1
WHERE T.STATUS = 'ACTIVE'
AND TYPE = ''
AND USERNAME = ''
AND T1.HASH_VALUE = T.SQL_HASH_VALUE
ORDER BY T1.CPU_TIME DESC
總結(jié)
以上是生活随笔為你收集整理的oracle性能问题排查,性能测试Oracle消耗排查记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 以下哪些是oracle预定义角色,Ora
- 下一篇: php多态的实际运用,7.9.1 PHP