oracle脚本刷错了怎么办,Oracle故障处理中常用的脚本
如果發現CPU使用率過高,多半是低效的語句導致的,如何找到這些語句,是我們首要解決的問題:
在linux下,通過top工具獲取到CPU消耗較大的Oracle進程IDtop?-?16:57:27?up?74?days,??6:50,??5?users,??load?average:?0.00,?0.00,?0.00
Tasks:?380?total,???1?running,?378?sleeping,???1?stopped,???0?zombie
Cpu(s):??0.1%us,??0.1%sy,??0.0%ni,?99.8%id,??0.0%wa,??0.0%hi,??0.0%si,??0.0%st
Mem:??16335900k?total,?15861788k?used,???474112k?free,???349740k?buffers
Swap:?16778232k?total,????93208k?used,?16685024k?free,?13761144k?cached
PID?USER??????PR??NI??VIRT??RES??SHR?S?%CPU?%MEM????TIME+??COMMAND?????????????????????????????????????????????????????????????????10604?oracle????20???0?6736m??18m??16m?S??0.3??0.1???0:02.28?oracle??10612?oracle????20???0?6736m??19m??17m?S??0.3??0.1???0:01.47?oracle
然后通過以下語句獲取相應的語句,這里的&pid就是上面top獲得進程ID號10604SELECT?/*+ORDERED*/
sql_text
from?v$sqltext?l
where?(l.hash_value,?l.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?s
where?s.paddr?=
(select?addr?from?v$process?p?where?p.spid?=?'&pid'))
order?by?piece?asc;
通過以下腳本獲取執行語句的會話和系列號,目的是為跟蹤該會話中的詳細信息select?sid,?serial#,?machine
from?v$session?s
where?s.paddr?=?(select?addr?from?v$process?p?where?p.spid?=?'&pid');
通過dbms_system包開啟跟蹤功能:exec?dbms_system.set_sql_trace_in_session(sid,serial#,true);
總結
以上是生活随笔為你收集整理的oracle脚本刷错了怎么办,Oracle故障处理中常用的脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么农村做自媒体的那么多 当然还是因为
- 下一篇: c语言计算时间的编程,C语言实现时间戳转