ORACLE数据库变得非常慢解决方案一例
数据库变得非常慢[/b][/b]
接到客户报告最近数据库速度慢了好多,同样的应用慢了4,5倍.
我做了个statspack,没发现什么问题,主要信息:
Cache Sizes (end)
~~~~~~~~~~~~~~~~~
Buffer Cache: 3,104M Std Block Size:
8K
Shared Pool Size: 400M Log Buffer:
3,072K
Load Profile
~~~~~~~~~~~~ Per Second Per Transaction
--------------- ---------------
Redo size: 394,918.91 68,578.62
Logical reads: 40,718.26 7,070.82
Block changes: 3,516.66 610.68
Physical reads: 1,673.37 290.59
Physical writes: 63.58 11.04
User calls: 122.83 21.33
Parses: 22.04 3.83
Hard parses: 2.23 0.39
Sorts: 10.36 1.80
Logons: 0.38 0.07
Executes: 54.35 9.44
Transactions: 5.76
% Blocks changed per Read: 8.64 Recursive Call %: 46.61
Rollback per transaction %: 0.00 Rows per Sort: 1601.81
Instance Efficiency Percentages (Target 100%)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Buffer Nowait %: 99.99 Redo NoWait %: 100.00
Buffer Hit %: 95.91 In-memory Sort %: 99.99
Library Hit %: 98.08 Soft Parse %: 89.90
Execute to Parse %: 59.45 Latch Hit %: 99.88
Parse CPU to Parse Elapsd %: % Non-Parse CPU:
Shared Pool Statistics Begin End
Memory Usage %: 86.59 86.84
% SQL with executions>1: 88.19 88.59
% Memory for SQL w/exec>1: 94.34 94.96
Top 5 Timed Events
~~~~~~~~~~~~~~~~~~ % Total
Event Waits Time (s) Ela Time
-------------------------------------------- ------------ ----------- --------
db file scattered read 585,373 5,110 36.24
latch free 38,146 3,331 23.63
db file sequential read 328,881 2,096 14.87
PX Deq: Txn Recovery Start 645 1,124 7.97
db file parallel write 3,840 754 5.35
****************************
AIX系统:
***********************************
#iostat 5 5
tty: tin tout avg-cpu: % user % sys % idle % iowait
0.0 2.5 16.4 2.8 69.7 11.1
Disks: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk0 20.9 141.9 33.0 1176852937 1037907344
hdisk1 20.4 136.6 31.3 1136554209 996356546
hdisk2 12.6 140.3 56.6 702195893 1487895240
hdisk3 10.6 249.1 39.5 1887071251 2001871356
cd0 0.0 0.0 0.0 0 0
tty: tin tout avg-cpu: % user % sys % idle % iowait
0.0 339.4 22.1 6.6 19.0 52.4
Disks: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk0 95.6 615.2 152.0 2112 964
hdisk1 96.0 612.0 150.8 2156 904
hdisk2 83.0 2470.4 226.4 11524 828
hdisk3 7.0 60.0 12.6 300 0
cd0 0.0 0.0 0.0 0 0
tty: tin tout avg-cpu: % user % sys % idle % iowait
0.0 460.4 31.3 7.7 13.1 47.9
Disks: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk0 95.4 648.0 158.4 1844 1396
hdisk1 98.4 679.2 163.4 1896 1500
hdisk2 89.6 2595.2 260.2 12088 888
hdisk3 5.8 44.8 10.2 212 12
cd0 0.0 0.0 0.0 0 0
tty: tin tout avg-cpu: % user % sys % idle % iowait
0.0 364.5 21.9 7.4 14.9 55.9
Disks: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk0 96.6 750.9 177.9 1152 2604
hdisk1 95.2 773.3 177.7 1176 2692
hdisk2 70.2 2002.5 205.1 9740 276
hdisk3 5.0 132.8 8.4 152 512
cd0 0.0 0.0 0.0 0 0
************
FZYC1/#sar 5 5
AIX FZYC1 3 4 000177DF4C00 06/06/06
10:15:40 %usr %sys %wio %idle
10:15:45 15 2 63 19
10:15:50 19 3 56 22
10:15:55 22 5 54 20
10:16:00 20 10 51 20
10:16:05 25 9 51 15
Average 20 6 55 19
******************
FZYC1/#ps -ef |pg
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Dec 07 - 29:33 /etc/init
root 4158 1 0 Dec 07 - 0:00 /usr/lib/methods/ssa_daemon -l
ssa0
root 4446 11096 0 Dec 07 - 182:03 /usr/dt/bin/dtsession
root 5014 1 0 Dec 07 - 1577:46 /usr/sbin/syncd 10
root 5958 10322 0 Dec 07 - 24:57 /usr/lpp/X11/bin/X -x abx -x db
e -x GLX -D /usr/lib/X11//rgb -T -force :0 -auth /var/dt/A:0-aWkfia
root 10322 1 0 Dec 07 - 0:01 /usr/dt/bin/dtlogin -daemon
root 10610 1 0 Dec 07 - 0:00 /usr/lib/errdemon
root 10926 4446 0 Dec 07 - 0:00 /usr/dt/bin/dtterm
root 11096 10322 0 Dec 07 - 0:00 dtlogin  -daemon
root 11364 17626 0 Dec 07 pts/0 0:00 /bin/ksh
root 11620 1 0 Dec 07 - 0:00 imqsmdem imqsrv.ini /etc/IMNSea
rch/dbcshelp/
...
我发现iowait太高了,怀疑是这个系统同步进程
root 5014 1 0 Dec 07 - 1577:46 /usr/sbin/syncd 10
为什么oracle网站进不去照成的,aix系统不怎么熟,会不会是这个照成数据库变慢呢? 要不要喀嚓掉它?
我怀疑不是数据库的问题,因为应用没什么变化,定期维护也有做.
问题情况简要叙述:
客户报告数据库越来越慢,业务快无法进行了,近期并没有上什么新的应用和大的改变.
收集信息:
statspack 发现top5等待首位为 db scatter read
aix topas 和iostat 发现iowait 严重,超过50% busy保持90%
分析:
查询top sql,v$sesstat+v$statname发现awms 应用进程db session logical reads等磁盘读写严重awms应用为实时查询(很频繁),查询sql的执行路径为,主要sql为对一些基表进行全表扫描.基表数据量不大(5-8w)左右,理论上查询io并不应该太髙.进一步查发现,该表dml较多,照成表不断扩大,碎片增多,对该表的full scan代价越来越大.仅仅凭112m的大小并不会照成太严重的io,但是该表被用于实查询,并且由于是full scan,在查询完成后会被至到LRU列表的least used 端.因此照成频繁的读写.内存不够用,引起了过多的swap.(这里为推测的原因,并不能肯定是正确的)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。