首页 > 数据库 > Oracle > 找出IO最高的SQL语句和process
本来写好的文章,结果session过期了。郁闷。
-------------------------------------------------------------------
1. 前几天在itpub上看到一个通过热块找出相关语句的sql
SELECT /*+rule*/hash_value,sql_text
FROM v$sqltext
WHERE (hash_value,address)IN(
SELECT a.hash_value,a.address
from v$sqltext a,
(SELECT DISTINCT a.owner,a.segment_name,a.segment_type
FROM dba_extents a,
(SELECT dbarfil,dbablk
FROM(SELECT dbarfil,dbablk
FROM X$bh
ORDER BY tch DESC)
WHERE ROWNUM < 11) b
WHERE a.relative_fno=b.dbarfil
AND a.block_id<=b.dbablk
AND a.block_id+a.blocks>b.dbablk) b
WHERE a.sql_text LIKE '%'||b.segment_name||'%'
AND b.segment_type='TABLE')
ORDER BY hash_value,address,piece
2. 测试脚本:
#!/bin/bash
a=2;
while (true)
do
log=`sqlplus -s it01271350/it01271350 << EOF
insert into test(agent) select object_name from dba_objects where rownum <$a;
commit;
EOF`;
echo $log;
let a=${a}+1;
sleep 1;
echo "$a is $a";
done;
该脚本每第N秒往test表插入N条数据。第N秒时,总数据量为:N!条。
test表为分区表: http://1xian.itpub.net/post/39204/483120
3. top iowait:
load averages: 0.43, 0.35, 0.46 16:03:21
195 processes: 190 sleeping, 3 running, 1 stopped, 1 on cpu
CPU states: 69.9% idle, 7.4% user, 4.4% kernel, 18.3% iowait, 0.0% swap
Memory: 8192M real, 3880M free, 2388M swap in use, 4436M swap free
4. 执行该sql:
执行结果的第一条就是:
SELECT DECODE((ROUND(TO_NUMBER(TO_CHAR(SYSDATE, 'MI')) / 30 , 0)), 0,0,1) FROM DUAL
里每半个小时自动增加分区的procedure里的语句。不明白为什么会出现在这里。为什么是这句呢,为什么不是insert之类的语句呢?
如果不用分区的话,会是什么样的呢?
5. 换一个方法,纯IO的考虑:
Solaris下有人开发了两个类似top 的io相关的小工具,prusage.pl 和 topio。
先试试 prusage.pl:
PID MINF MAJF INBLK OUBLK CHAR-kb COMM
23751 0 0 0 85 344 oracle
23753 0 0 0 53 502 oracle
找到两个pid:23753, 23751
select program from v$process p where p.spid in (23753, 23751);
----
oracle@occb (DBW0)
oracle@occb (LGWR)
分别得到DBW0和LGWR。这的的确确是耗用IO最高的进程。
然后再试试topio:
bash-2.05$ perl topio.pl -d
--PID-------RWChar-----DltRWC-----MjPgFlt-DltMPF Command------------------------
23753 1870218052 1583104 1 0 ora_lgwr_transact
23751 1079399197 753664 0 0 ora_dbw0_transact
差不多的结果。
6.
两种方法都不“究竟”,似乎找到了点什么,但“实无所得”。望路过的达人为我解惑。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21342557/viewspace-1021348/ ,如需转载,请注明出处,否则将追究法律责任。