監控使用高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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PowerShell 指令碼來監控 CPU、記憶體和磁碟使用情況:指令碼記憶體
- 乾貨分享|快速定位UXDB中CPU高負荷的SQL語句UXSQL
- 監控磁碟使用率的shell指令碼指令碼
- Shell 指令碼語句指令碼
- 監聽ORM背後的sql語句。ORMSQL
- 【shell】磁碟監控指令碼指令碼
- 如何用bash shell 指令碼監控 Linux記憶體、磁碟和 CPU?指令碼Linux記憶體
- 使用sql語句查詢平均值,使用sql語句查詢資料總條數, not in 篩選語句的使用SQL
- PostgreSQL之鎖監控指令碼SQL指令碼
- 使用Shell指令碼程式監控網站URL是否正常指令碼網站
- 用於自動監控磁碟使用情況的 Shell 指令碼指令碼
- SQL隱碼攻擊語句SQL
- 監控系統告警指令碼集合指令碼
- T-SQL運維指令碼——檢視SQLServer平均最耗資源時間的SQL語句SQL運維指令碼Server
- Java中如何解析SQL語句、格式化SQL語句、生成SQL語句?JavaSQL
- SQL語句SQL
- win10 cpu溫度監控怎麼用_如何使用win10 cpu溫度監控Win10
- SQL語句IN的用法SQL
- 用 Bash 指令碼監控 Linux 上的記憶體使用情況指令碼Linux記憶體
- Shell----監控CPU/記憶體/負載高時的程式記憶體負載
- 如何快速定位當前資料庫消耗 CPU 最高的 sql 語句?資料庫SQL
- 監控java程式啟動時的CPU使用情況Java
- 關於前端指令碼異常監控的思考前端指令碼
- Shell 系統資訊監控指令碼指令碼
- jsqlparser使用記錄---生成sql語句JSSQL
- Fastapi sqlalchemy DBApi 直接使用sql語句ASTAPISQL
- Shell指令碼之for迴圈語句的應用指令碼
- [20211009]使用bash計算sql語句的sql_id.txtSQL
- 記憶體CPU監控記憶體
- 【SQL】Oracle SQL join on語句and和where使用區別SQLOracle
- 分享實用監控指令碼:使用Shell檢查程式是否存在指令碼
- 【SQL】9 SQL INSERT INTO 語句SQL
- 【SQL】10 SQL UPDATE 語句SQL
- 【SQL】11 SQL DELETE 語句SQLdelete
- SQL SELECT 語句SQL
- sql常用語句SQL
- 使用zabbix監控sql server的釋出訂閱SQLServer
- 寫了個監控 ElasticSearch 程式異常的指令碼!Elasticsearch指令碼
- 網路卡流量監控指令碼,python實現指令碼Python