捕獲消耗cpu的語句

[复制链接]
查看11 | 回复6 | 2010-10-8 09:34:02 | 显示全部楼层 |阅读模式
數據庫oracle 9207os window server 系統 ,如何捕獲消耗cpu的語句/
回复

使用道具 举报

千问 | 2010-10-8 09:34:02 | 显示全部楼层
linux 系統是
1)top 獲得占用cpu比較高的pid
2)通過pid 捕獲它的執行的語句
SELECT /*+ ORDERED */
sql_text
FROM v$sqltext a
WHERE (a.hash_value, a.address) IN (
SELECT DECODE (sql_hash_value,
0, prev_hash_value,
sql_hash_value
),
DECODE (sql_hash_value, 0, prev_sql_addr, sql_address)
FROM v$session b
WHERE b.paddr = (SELECT addr
FROM v$process c
WHERE c.spid = '&pid'))
ORDER BY piece ASC
/
3)對捕獲的sql語句進行性能的調優
不知window系統如何獲得?
回复

使用道具 举报

千问 | 2010-10-8 09:34:02 | 显示全部楼层
参考 v$sql 视图中的 CPU_TIME 和 ELAPSED_TIME 两列!
回复

使用道具 举报

千问 | 2010-10-8 09:34:02 | 显示全部楼层
也可以通过v$sesstat按照cpu used by this session的value的值排序,找到对应的sid.
然后对该会话进行跟踪,定位到语句.
回复

使用道具 举报

千问 | 2010-10-8 09:34:02 | 显示全部楼层
原帖由 thompsun 于 2010-8-27 23:28 发表
也可以通过v$sesstat按照cpu used by this session的value的值排序,找到对应的sid.
然后对该会话进行跟踪,定位到语句.

这你得先知道相关的session,如果session不知道的话,这个方法就不太好了!
回复

使用道具 举报

千问 | 2010-10-8 09:34:02 | 显示全部楼层
SQL> select * from v$sesstat where rownum select * from v$sesstat where rownum
这有什么问题?


回复

使用道具 举报

千问 | 2010-10-8 09:34:02 | 显示全部楼层
最简单的方法是在你需要检查的这段时间做statspack或者awr的report,当然你也可以自己根据statspack和awr的基表写sql查出。
statspack根据stats$sql_summary,order by CPU_TIME。
awr的话根据DBA_HIST_SQLSTAT,order by CPU_TIME_DELTA
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行