本帖最后由 lfree 于 2012-12-11 12:07 编辑
我管的dataguard使用recover managed standby database disconnect from session delay 720。
我发现一个问题,如果使用asm作为存储,会出现"大量“读取操作。
snap.jpg (10 KB, 下载次数: 43)
2012-12-11 12:04 上传
如果执行alter database open read only ;,流量下降下来。我的存储使用IP存储。
我开始以为SGA设置不合理,检查发现:
SQL> show sga
Total System Global Area 2147483648 bytes
Fixed Size 2085360 bytes
Variable Size 385879568 bytes
Database Buffers 1744830464 bytes
Redo Buffers 14688256 bytes
SQL> show parameter 32k
NAME TYPE VALUE
------------------------------------ ----------- -----
db_32k_cache_size big integer 256M
--应该是正常,也是db_32k_cache_size设置小一点,设置为512M。
recover managed standby database disconnect from session delay 720 ;
top -c 观察,隔一段时间出现在前面:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19628 oracle 15 0 2221m 37m 16m S 1.0 0.9 0:00.67 ora_mrp0_icarestd
使用strace跟踪发现:
$ strace -p 19628 -t -e pread -o /tmp/aa1
....
15:05:48 pread(17, "\25\302\0\0\260\3\0\0\35\312\23\0\377\377\1\4\212\245\0"..., 49152, 137101312) = 49152
15:05:48 pread(17, "\25\302\0\0\307\1\0\0\257\311\23\0\377\377\1\4\346\r\0"..., 16384, 126861312) = 16384
15:05:48 pread(18, "\25\302\0\0\310\1\0\0\260\311\23\0\377\377\1\4\303\r\0"..., 16384, 229507072) = 16384
15:05:53 pread(17, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\24\232\0\0\0\0\0\0"..., 16384, 125845504) = 16384
15:05:53 pread(17, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\24\232\0\0\0\0\0\0"..., 16384, 429932544) = 16384
....
lrwx------ 1 oracle oinstall 64 Dec 10 15:07 17 -> /dev/raw/raw1
lrwx------ 1 oracle oinstall 64 Dec 10 15:07 18 -> /dev/raw/raw2
$ cut -f1 -d' ' /tmp/aa1 | uniq -c
212 15:05:48
164 15:05:53
48 15:05:54
212 15:05:59
212 15:06:04
69 15:06:09
143 15:06:10
--基本上间隔5秒,读/dev/raw/raw[12].
--过滤^15:05:59。
$ grep '^15:05:59' /tmp/aa1 | cut -f2 -d '=' > /tmp/aa2
$ wc -l /tmp/aa2
212 /tmp/aa2
--后面写入211个+,并且加入pq
$ cat /tmp/aa2 | dc
20267008
--读取了 20267008/1024/1024=19.328125M,分摊到5秒的时间内,确实正好4M上下。基本和流量图一致。
# dstat -n -N eth1,eth0,total 1 100
--net/eth1----net/eth0---net/total-
recv send: recv send: recv send
0 0 : 0 0 : 0 0
20M 5043k:2545k 64k: 22M 5108k
0 0 : 0 0 : 0 0
19k 81k: 24k 2168B: 44k 83k
0 0 : 0 0 : 0 0
5634B 108k: 60k 6982B: 66k 114k
0 0 : 0 0 : 0 0
20M 161k: 17k 2524B: 20M 164k
0 0 : 0 0 : 0 0
17k 37k: 958B 624B: 18k 38k
0 0 : 0 0 : 0 0
11M 109k: 29k 2232B: 11M 111k
0 0 : 0 0 : 0 0
9227k 89k:4685B 962B:9231k 90k
0 0 : 0 0 : 0 0
27k 297k: 144k 12k: 172k 309k
0 0 : 0 0 : 0 0
20M 254k: 82k 3384B: 20M 257k
0 0 : 0 0 : 0 0
18k 43k:3890B 962B: 22k 43k
0 0 : 0 0 : 0 0
--基本验证。
# dstat -d -D sda,sdb,total 1 100
--dsk/sda-----dsk/sdb----dsk/total-
read writ: read writ: read writ
252B 13k:6134B 11k:6387B 24k
0 0 : 0 59k: 0 59k
0 0 : 16k 37k: 16k 37k
0 0 : 0 0 : 0 0
0 0 : 19M 481k: 19M 481k
0 168k: 16k 62k: 16k 230k
0 0 : 0 108k: 0 108k
0 0 : 0 18k: 0 18k
0 0 : 16k 46k: 16k 46k
0 0 : 16M 9216B: 16M 9216B
0 0 :3568k 18k:3568k 18k
0 0 : 16k 58k: 16k 58k
0 0 : 0 4096B: 0 4096B
0 0 : 0 14k: 0 14k
0 0 : 16k 40k: 16k 40k
0 0 : 19M 5120B: 19M 5120B
0 0 : 0 40k: 0 40k
0 0 : 16k 47k: 16k 47k
0 0 : 0 0 : 0 0
0 0 : 12M 132k: 12M 132k
0 0 : 48M 32k: 48M 32k
0 0 : 0 168k: 0 168k
0 0 : 0 14k: 0 14k
0 0 : 16k 180k: 16k 180k
0 16k: 0 4096B: 0 20k
0 0 :5776k 153k:5776k 153k
0 0 : 14M 36k: 14M 36k
0 0 : 0 5120B: 0 5120B
0 0 : 0 78k: 0 78k
0 0 : 16k 80k: 16k 80k
0 0 : 0 176k: 0 176k
--问题是不知道mrp进程到底读取什么????
我在另外使用文件系统的dataguard上监测mrp进程,发现读取的控制文件。而且文件系统有缓存的,基本不存在读取磁盘操作。
这个是否以为延迟应用日志+asm这个方式有一些问题。