近日客户报多套10g的数据库在使用NBU磁带备份时出现RMAN FULL BACKUP十分缓慢的问题,这些数据库中最大一个的达到2.61T,该数据库在一个月前地全库0级备份耗时在3-4个小时,而在最近猛涨到17个小时。客户之前已经向Symantec提交了服务请求,但暂时没有得到结论。希望我们从Oracle角度分析该备份速度变慢问题。
我们首先分析了备份信息的动态视图V$rman_backup_job_details:
|
OUTPUT_DEVICE |
INPUT_TYPE |
ELAPSED_SECONDS |
INPUT_BYTES_DISPLAY |
INPUT_BYTES_PER_SEC |
OUTPUT_BYTES_PER_SEC |
17 |
SBT_TAPE |
DB INCR |
62078 |
2.61T |
44.08M |
18.10M |
以上可以确认在对2.61T大小的数据库执行全库磁带备份时耗费了62078s,这里还显示了backup时每秒的读取IO为44M,每秒的写出IO为18M;这里不能因为简单的output io per second<input io per second,而断论写出能力存在瓶颈;备份时对数据文件的读取和写出backup piece到备份介质上的操作是一个整体,CPU、Input IO、Output IO任何一环都可能成为备份的瓶颈;譬如因为对数据文件的读取IO存在瓶颈,那么相应的写出IO也会慢下来;又譬如当RMAN与备份服务器之间的IO带宽存在瓶颈,那么相应的读取IO也会不得不慢下来。具体是哪一个环节出现了问题,我们需要求助于其他的RMAN动态性能视图,如:
V$BACKUP_SYNC_IO
Displays rows when the I/O is synchronous to the process (or thread on some platforms) performing the backup.
V$BACKUP_ASYNC_IO
Displays rows when the I/O is asynchronous to the process (or thread on some platforms) performing the backup.
以上2个视图的区别在于一个汇聚了使用同步IO执行RMAN备份恢复操作的性能信息,而另一个是异步IO的。
因为客户使用默认配置disk_async_io为true,故而我们首先关注input IO的性能信息,这些信息存放在V$backup_async_io视图中;而对于磁带设备未启用slaves IO模拟的异步IO(tape_asynch_io=true但是backup_tape_io_slaves为默认的false),所以与磁带设备相关的output IO的性能信息存放在v$backup_sync_io视图中。
DEVICE |
OPEN_TIME |
ELAPSED |
BYTES/S |
IO_COUNT |
READY |
long_waits |
LONG_WAIT_TIME_TOTAL |
LONG_WAIT_TIME_MAX |
DISK |
4/4 |
388900 |
372827681 |
2765564 |
2074114 |
90028 |
231181 |
53 |
DISK |
4/5 |
753900 |
192323498 |
2765564 |
2074114 |
90028 |
178548 |
41 |
DISK |
4/6 |
369000 |
392934106 |
2765564 |
2074114 |
90028 |
243507 |
41 |
DISK |
4/7 |
405100 |
357918255 |
2765564 |
2074114 |
90028 |
268117 |
73 |
DISK |
4/8 |
347900 |
416765407 |
2765564 |
2074114 |
90028 |
183543 |
77 |
DISK |
4/9 |
395800 |
366328159 |
2765564 |
2074114 |
90028 |
255399 |
48 |
DISK |
4/10 |
428400 |
338451646 |
2765564 |
2074114 |
90028 |
268544 |
45 |
DISK |
4/11 |
413200 |
350901949 |
2765564 |
2074114 |
90028 |
269857 |
42 |
DISK |
4/12 |
735400 |
197161661 |
2765564 |
2074114 |
90028 |
169016 |
34 |
DISK |
4/13 |
410000 |
353640696 |
2765564 |
2074114 |
90028 |
283607 |
60 |
DISK |
4/14 |
408300 |
355113116 |
2765564 |
2074114 |
90028 |
279012 |
38 |
DISK |
4/15 |
442700 |
327519054 |
2765564 |
2074114 |
90028 |
308744 |
605 |
DISK |
4/16 |
393000 |
368938130 |
2765564 |
2074114 |
90028 |
251509 |
205 |
DISK |
4/17 |
423100 |
342691291 |
2765564 |
2074114 |
90028 |
273868 |
42 |
DISK |
4/18 |
375600 |
386029513 |
2765564 |
2074114 |
90028 |
230859 |
328 |
DISK |
4/19 |
721200 |
201043657 |
2765564 |
2074114 |
90028 |
191753 |
162 |
DISK |
4/20 |
401000 |
361577769 |
2765564 |
2074114 |
90028 |
272852 |
147 |
DISK |
4/21 |
346600 |
418328578 |
2765564 |
2074114 |
90028 |
209569 |
109 |
DISK |
4/22 |
400500 |
362029177 |
2765564 |
2074114 |
90028 |
265060 |
112 |
DISK |
4/23 |
402400 |
360319794 |
2765564 |
2074114 |
90028 |
259008 |
594 |
DISK |
4/24 |
449600 |
322492627 |
2765564 |
2074114 |
90028 |
274202 |
64 |
DISK |
4/25 |
413900 |
350308493 |
2765564 |
2074114 |
90028 |
269380 |
230 |
DISK |
4/26 |
748600 |
193685126 |
2765564 |
2074114 |
90028 |
177477 |
105 |
DISK |
4/27 |
389900 |
371871468 |
2765564 |
2074114 |
90028 |
261200 |
38 |
DISK |
4/28 |
383800 |
377781879 |
2765564 |
2074114 |
90028 |
241870 |
158 |
DISK |
4/29 |
403700 |
359159488 |
2765564 |
2074114 |
90028 |
266135 |
212 |
DISK |
4/30 |
390600 |
371205031 |
2765564 |
2074114 |
90028 |
248161 |
340 |
DISK |
5/1 |
463600 |
312753851 |
2765564 |
2074114 |
90028 |
271247 |
39 |
DISK |
5/2 |
419900 |
345302894 |
2765564 |
2074114 |
90028 |
255042 |
117 |
DISK |
5/3 |
705700 |
205459381 |
2765564 |
2074114 |
90028 |
173043 |
189 |
DISK |
5/4 |
418400 |
346540835 |
2765564 |
2074114 |
90028 |
291614 |
47 |
DISK |
5/5 |
357400 |
405687424 |
2765564 |
2074114 |
90028 |
222676 |
188 |
DISK |
5/6 |
421400 |
344073767 |
2765564 |
2074114 |
90028 |
285860 |
95 |
DISK |
5/7 |
405100 |
357918255 |
2765564 |
2074114 |
90028 |
263761 |
38 |
DISK |
5/8 |
381500 |
380059463 |
2765564 |
2074114 |
90028 |
203510 |
210 |
DISK |
5/9 |
918400 |
157875311 |
2765564 |
2074114 |
90028 |
221293 |
37 |
DISK |
5/10 |
3378600 |
42915020 |
2765564 |
2074114 |
90028 |
142211 |
36 |
DISK |
5/11 |
559900 |
258961753 |
2765564 |
2074114 |
90028 |
252911 |
174 |
DISK |
5/12 |
622500 |
232919976 |
2765564 |
2074114 |
90028 |
241495 |
40 |
DISK |
5/13 |
626700 |
231359000 |
2765564 |
2074114 |
90028 |
237973 |
41 |
DISK |
5/14 |
802000 |
180788884 |
2765564 |
2074114 |
90028 |
231283 |
42 |
DISK |
5/15 |
601200 |
241172131 |
2765564 |
2074114 |
90028 |
209418 |
40 |
DISK |
5/16 |
1387800 |
104476643 |
2765564 |
2074114 |
90028 |
211878 |
36 |
这里我们关心的几个时间指标包括:ELAPSED(Input IO的总耗时)、LONG_WAIT_TIME_TOTAL(长IO的总等待时间)、LONG_WAIT_TIME_MAX(最长一次的IO等待时间)的单位均为百分之一秒,
该视图的具体定义参考这里。
从以上chart中(由于列宽的原因只截取了部分数据)我们可以看到从4/4到5/16之间备份的Input IO总耗时(elapsed)虽然间歇性的暴涨到过33786s,但其他IO指标:IO总数、READY IO总数、LONG IO WAIT的次数、LONG IO WAIT的总耗时、最长LONG IO WAIT均没有出现大的变化;基本可以判定在备份期间对数据文件的读取不存在瓶颈,为了进一步诊断需要分析备份输出的IO性能状况:
DEVICE |
date |
ELAPSED |
BYTES |
BYTES/S |
IO_COUNT |
IO_TIME_TOTAL |
IO_TIME_MAX |
DISCRETE_BYTES_PER_SECOND |
SBT_TAPE |
4/5 |
754900 |
584663433216 |
77449123 |
2230314 |
440365 |
2600 |
132767916 |
SBT_TAPE |
4/5 |
703900 |
553432907776 |
78623797 |
2111179 |
381135 |
5800 |
145206530 |
SBT_TAPE |
4/12 |
736400 |
588200542208 |
79875142 |
2243807 |
433298 |
3400 |
135749655 |
SBT_TAPE |
4/12 |
692300 |
556839731200 |
80433299 |
2124175 |
369237 |
2600 |
150808216 |
SBT_TAPE |
4/19 |
722200 |
591873179648 |
81954193 |
2257817 |
395904 |
3400 |
149499166 |
SBT_TAPE |
4/19 |
829000 |
561043210240 |
67677106 |
2140210 |
510746 |
2801 |
109847793 |
SBT_TAPE |
4/26 |
749600 |
596010598400 |
79510485 |
2273600 |
435940 |
2600 |
136718493 |
SBT_TAPE |
4/26 |
700300 |
565171191808 |
80704154 |
2155957 |
377019 |
2800 |
149905228 |
SBT_TAPE |
5/3 |
706800 |
600177377280 |
84914739 |
2289495 |
396965 |
5800 |
151191510 |
SBT_TAPE |
5/3 |
712500 |
569155518464 |
79881476 |
2171156 |
392324 |
5800 |
145072827 |
SBT_TAPE |
5/10 |
3379700 |
604452159488 |
17884787 |
2305802 |
3093781 |
2802 |
19537652 |
SBT_TAPE |
5/10 |
2798400 |
573396746240 |
20490164 |
2187335 |
2524296 |
2801 |
22715115 |
SBT_TAPE |
5/17 |
|
428095307776 |
|
1633054 |
2216291 |
5800 |
19315844 |
可以从以上chart中可以发现到5/3为止的output io总耗时还处于合理范围内(为7068+7125)s,约为4小时。而到了5/10时输出IO的总耗时达到了(33797+29784)s,约为17.6小时。研究其他IO统计信息可以发现5/10的IO_TIME_TOTAL总数为(30937+25242)s,IO_TIME_TOTAL代表了某个IO等待的总耗时,单位为百分之一秒。从另一个IO性能指标DISCRETE_BYTES_PER_SECOND来看,在5/10备份文件的平均传输率急剧下降。
综合上述现象,诱发客户环境中的RMAN全库备份缓慢的主要原因是备份文件输出IO性能在一段时间内急剧下降,瓶颈应当存在于RMAN与NBU备份服务器之间,与数据库读取性能没有关系。给客户的建议是复查数据库服务器到NBU备份服务器间的网络带宽是否正常,NBU服务器的性能是否正常,磁带库的写出性能是否正常。
这个case后续经过对NBU的复查发现原因是虚拟磁带库VTL的存储电池过期,导致读写数据时直接从磁盘上进行,而不经过缓存,故影响了数据库全备份的速度。由于VTL存储电池过期信息需要从串口直接访问其存储才能确认问题,所以在问题发生之初无法从VTL的管理界面中获取该信息。
这个case告诉我们不仅是raid卡的冲放电、存储的ups电池过期会引发严重的IO性能问题,VTL的存储电池过期也可能给数据库备份造成麻烦,要让系统7*24时刻正常运行,有太多指标需要我们去关注,良好的规范很重要,同时很多时候我们不得不和硬件打交道。