Oracle故障处理中常用的脚本
2015-02-25 17:07
363 查看
如果发现CPU使用率过高,多半是低效的语句导致的,如何找到这些语句,是我们首要解决的问题:
在linux下,通过top工具获取到CPU消耗较大的Oracle进程ID
在linux下,通过top工具获取到CPU消耗较大的Oracle进程ID
top - 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号10604
SELECT /*+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常用脚本——Agent问题处理脚本
- 工作中遇到的oracle故障分析和处理一例
- Oracle 常用技巧和脚本
- ORACLE 常用脚本
- ORACLE深入 第一章ORACLE DBA常用语句和脚本(1)
- Oracle 排序中常用的NULL值处理方法
- Oracle中一些常用的脚本[适用DBA]
- 在使用ORACLE时常用到的命令和脚本
- Oracle常用脚本(3)
- Oracle常用脚本(2)
- 打印机四种进纸故障常用处理方法
- [导入]Oracle 常用技巧和脚本
- 工作中遇到的ORACLE故障处理一例
- [导入]Oracle常用技巧和脚本
- ORACLE 常用脚本[转载]
- Oracle常用脚本备忘
- Oracle常用技巧和脚本
- [导入]Oracle常用技巧和脚本
- ORACLE数据库事务处理和故障恢复
- Oracle 排序中常用的NULL值处理方法