監控使用高cpu的sql語句指令碼
1,在linux 加入如下指令碼
[oraprod@ebsdb ~]$ crontab -l
#*/5 * * * * sh /home/oraprod/os_status.sh > /home/oraprod/os_status.log
[oraprod@ebsdb ~]$ cat /home/oraprod/os_status.sh
#!/bin/sh
#add date:2013/07/02
. /ebs10/oracle/prod/db/tech_st/11.1.0/prod_ebsdb.env;
path="/home/oraprod/os_status";
rm -rf /home/oraprod/os_status/os_*;
ps -e -o pcpu,pmem,pid,time,user,tty,args|sort -n -k 1 -r|grep oracle |grep LOCAL|head -20 > $path/os_s00.txt;
cat $path/os_s00.txt |awk '{print $1}'|sed s/^/,\'\/g > $path/os_s11.txt;
cat $path/os_s00.txt |awk '{print $2}'|sed s/^/\',\'\/g > $path/os_s12.txt;
cat $path/os_s00.txt |awk '{print $3}'|sed s/^/\',\'\/g > $path/os_s13.txt;
cat $path/os_s00.txt |awk '{print $4}'|sed s/^/\',\'\/g > $path/os_s14.txt;
cat $path/os_s00.txt |awk '{print $5}'|sed s/^/\',\'\/g > $path/os_s15.txt;
cat $path/os_s11.txt|sed s/^/insert\ into\ system.CHECK_OSSESSION\ values\(\'192\.168\.0\.6\'/g > $path/os_s21.txt;
paste $path/os_s21.txt $path/os_s12.txt > $path/os_s22.txt;
paste $path/os_s22.txt $path/os_s13.txt > $path/os_s23.txt;
paste $path/os_s23.txt $path/os_s14.txt > $path/os_s24.txt;
paste $path/os_s24.txt $path/os_s15.txt |sed s/$/\'\)\;\/g > $path/os_s25.txt;
cat $path/os_s25.txt >> $path/os_checksession.sql
echo 'exit' >> $path/os_checksession.sql;
#sqlplus oscheck/checkdb@checkdb <sqlplus / as sysdba <@/home/oraprod/os_status/os_checksession.sql;
2,在資料庫中加入job
begin
sys.dbms_job.submit(job => :job,
what => 'INSERT INTO system.CHECK_os_status
(HOST,
v_spid,
program,
process,
sql_text,
OSCPU,
os_time,
OSMEM,
v_sid,
v_serial,
createtime)
select c.host,
v$process.spid,
v$session.program,
process,
substr(sql_text,1,100),
c.oscpu,
c.os_time,
c.osmem,
v$session.sid,
v$session.serial#,sysdate
from v$sqlarea,
v$session,
v$process,
(select to_number(decode(length(rtrim(a.os_pid)),
6,
substr(trim(a.os_pid), 1, 5),
5,
substr(trim(a.os_pid), 1, 4))) ospid,
a.host,
a.oscpu,
a.os_time,
a.osmem
from system.CHECK_OSSESSION a) c
where v$sqlarea.address = v$session.sql_address
and v$sqlarea.hash_value = v$session.sql_hash_value
and v$session.paddr = v$process.addr
and v$process.spid = c.ospid;
delete system.CHECK_OSSESSION ;',
next_date => to_date('03-07-2013 16:09:10', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'SYSDATE + (10/(24*60))');
commit;
end;
/
表:
create table CHECK_OS_STATUS
(
HOST VARCHAR2(20),
V_SPID NUMBER,
PROGRAM VARCHAR2(50),
PROCESS VARCHAR2(30),
SQL_TEXT VARCHAR2(1000),
OSCPU VARCHAR2(30),
OS_TIME VARCHAR2(30),
OSMEM VARCHAR2(30),
V_SID NUMBER,
V_SERIAL NUMBER,
CREATETIME DATE
)
create table CHECK_OSSESSION
(
HOST VARCHAR2(20),
OSCPU VARCHAR2(30),
OSMEM VARCHAR2(30),
OS_PID VARCHAR2(8),
OS_TIME VARCHAR2(30),
OSUSER VARCHAR2(30)
)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15187685/viewspace-765427/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 指令碼:監控當前活動的語句指令碼
- 【SQL監控】SQL完全監控的指令碼SQL指令碼
- 監控cpu與memory指令碼指令碼
- oracle 高耗cpu sql語句的捕捉 。OracleSQL
- stap監控cpu指令碼小結指令碼
- sql語句引起的CPU佔用國高SQL
- Oracle 資料庫監控SQL語句Oracle資料庫SQL
- Oracle-監控sql語句的過載率OracleSQL
- Oracle使用審計監控使用者執行過的SQL語句OracleSQL
- PowerShell 指令碼來監控 CPU、記憶體和磁碟使用情況:指令碼記憶體
- Oracle慢SQL監控指令碼實現OracleSQL指令碼
- 資料庫效能SQL監控指令碼資料庫SQL指令碼
- oracle 11g監控SQL指令碼OracleSQL指令碼
- ORACLE:使用tcpdump 監控客戶端發過來的所有SQL語句OracleTCP客戶端SQL
- 效能監控方面的一些SQL語句SQL
- 監控mysql索引使用效率的指令碼MySql索引指令碼
- 監控指令碼指令碼
- oracle空間使用監控指令碼Oracle指令碼
- SQL Server 監控統計阻塞指令碼資訊SQLServer指令碼
- 乾貨分享|快速定位UXDB中CPU高負荷的SQL語句UXSQL
- 監控磁碟使用率的shell指令碼指令碼
- 監控 SQL Server 的執行狀況--常用檢測語句SQLServer
- mysql 的一個監控指令碼,監控heartbeatMySql指令碼
- mysql監控指令碼MySql指令碼
- DBA監控指令碼指令碼
- session指令碼監控Session指令碼
- 埠監控指令碼指令碼
- oracle 監控指令碼Oracle指令碼
- listener監聽監控指令碼指令碼
- mysql mon 的一個監控指令碼,監控heartbeatMySql指令碼
- oracle監控資料泵匯入和匯出的sql語句OracleSQL
- 同事寫的監控Logical Standby SQL apply 程式stop的監控報警指令碼SQLAPP指令碼
- Shell 指令碼語句指令碼
- Oracle常用效能監控語句解析Oracle
- ogg監控指令碼指令碼
- stap監控IO指令碼指令碼
- 【shell】磁碟監控指令碼指令碼
- 通過shell指令碼監控sql執行頻率指令碼SQL