简易高负载进程记录脚本

作者: Maclean Liu , post on March 19th, 2010 , English Version
【本站文章除注明转载外,均为本站原创编译】
转载请注明:文章转载自: Oracle Clinic – Maclean Liu的个人技术博客 [http://www.oracledatabase12g.com/]
本文标题: 简易高负载进程记录脚本
本文永久地址: http://www.oracledatabase12g.com/archives/%e7%ae%80%e6%98%93%e9%ab%98%e8%b4%9f%e8%bd%bd%e8%bf%9b%e7%a8%8b%e8%ae%b0%e5%bd%95%e8%84%9a%e6%9c%ac.html

Oracle 10g 中引入了v$osstat 视图方便了dba了解主机负载情况,同时也可以通过oem网页观察到一段时间内主机上负载较高的进程;但如果db未开启oem管理界面,则无法了解过去时段内高负载服务进程的相关信息。以下脚本可以给予一定的帮助。

CREATE TABLE "SYS"."HIGHLOAD_HISTORY"
(
"SAMPLE_TIME" DATE,
"SPID"     NUMBER(10,0),
"LOAD"     VARCHAR2(7 BYTE),
"SID"      VARCHAR2(30 BYTE),
"USERNAME" VARCHAR2(40 BYTE),
"MACHINE"  VARCHAR2(64 BYTE),
"PROGRAM"  VARCHAR2(48 BYTE),
"SQL_ID"   VARCHAR2(13 BYTE),
"SQL_FULLTEXT" CLOB,
"INST_ID" NUMBER(2,0),
"STATUS"  VARCHAR2(8 BYTE)
)    --建立记录高负载进程信息的表,内容包括了cpu使用率,及sql(并不十分准确,因为获取spid后需要进行查询)
ps aux|grep $ORACLE_SID|awk '{ if($3>=0.3) print "insert into highload_history select sysdate rec_time,"$2,",\47"$3"%\47",", ss.sid,ss.username,ss.machine,ss.program,ss.sql_id,(select sql_fulltext from v$sqlarea sq where sq.sql_id=ss.sql_id),(select instance_number from v$instance),ss.status from v$session ss,v$process pr where  pr.addr=ss.paddr and pr.spid=",$2";"}'  | sqlplus / as sysdba  --直接运行即可

© 2010, www.oracledatabase12g.com. 版权所有.文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.

相关文章 | Related posts:

  1. 脚本:监控数据库中的活跃用户及其运行的SQL
  2. Script:List SORT ACTIVITY
  3. Oracle中dblink所产生远程会话的一些表现
  4. Script: Listing Memory Used By All Sessions
  5. Script to Collect RAC Diagnostic Information (racdiag.sql)
  6. 内部视图:interval view x$kvii 介绍
  7. UNDERSTANDING CURSOR_SPACE_FOR_TIME WITH SAMPLE
  8. 如何使用gdb工具对Oracle系统状态(systemstate)做trace
  9. Understanding Bootstrap Of Oracle Database
  10. Troubleshooting JVM Performance Problems

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>