使用v$session_longops来监控RMAN备份进度


这次备份的数据库是个大块头,数据文件达到10TB。 可是管理方只允许使用4个通道备份,直接扼杀了备份速度。通过glance命令查看cpu,磁盘、内存的压力都不高,即使开8个通道或是16个通道也没问题。该主机是双节点RAC,每台主机配有32个cpu,并且是在周末业务较低的时候备份。

这4个通道的限制就如同一辆法拉利挂着一档行驶在高速公路上,这要多久才能跑完...

1,备份之前了解一下目标数据库的状态

看看dba_segments,实际数据块的总大小为5TB
SQL> select sum(bytes)/1024/1024/1024 GB from dba_segments;

        GB
----------
5287.02454

看看dba_data_files,数据文件总大小大约为10TB
SQL> select sum(bytes)/1024/1024/1024 GB from dba_data_files;

        GB
----------
9402.70592

临时备份路径为/orabak,磁盘空间大小为为9TB
bdf
/dev/vx/dsk/bakdg/bakvol
                  9961472000  634128 9883018840    0% /orabak


2,这是一个普通压缩方式的数据库全备脚本,包含控制文件、参数文件和归档日志文件。最突出的部分是这4通道,让人痛不欲生。
vi backup.cmd

rman target / <<EOF
run{
allocate channel c1 device type disk maxpiecesize = 20G;
allocate channel c2 device type disk maxpiecesize = 20G;
allocate channel c3 device type disk maxpiecesize = 20G;
allocate channel c4 device type disk maxpiecesize = 20G;
backup tag 'sh_db_full' as compressed backupset format '/orabak/sh_db_full_%U' database
include current controlfile;
sql 'alter system archive log current';
backup tag 'sh_arch' as compressed backupset archivelog all format '/orabak/sh_arch_%U';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
EOF

3,在Oracle用户下授权备份脚本
chmod 755 backup.cmd

4,在后台执行备份脚本
nohup backup.cmd &

5,通过nohup.out日志来监控rman备份输出

备份时间为2014/10/12日 16:45
tail -f nohup.out

6,通过glance命令来观察备份时的系统状态,发现CPU的使用率只有23%,磁盘压力只有15%,4个通道所占用的cpu分别为100%左右。其实我们的可以资源非常多,却不允许使用。

Glance 11.13.007                16:47:43 jccmsdb1      ia64                                                        Current Avg  High
------------------------------------------------------------------------------------------------------------------------------------
CPU  Util  SSN              NU UW W                                                                              | 23%  23%  33%
Disk Util  F            F                                                                                        | 15%  11%  30%
Mem  Util  S                SU                                              UF  F                                | 70%  70%  70%
Networkil  U                                    UR              R                                                | 54%  54%  54%
------------------------------------------------------------------------------------------------------------------------------------
                                                            PROCESS LIST                                                Users=    9
                        User      CPU %  Thrd  Disk        Memory    Block
Process Name        PID Name    (2400% max) Cnt IO rate    RSS      VSS  On
------------------------------------------------------------------------------------------------------------------------------------
oraclesgpmdb      12326 oracle        100    1  51.9  92.0mb    104mb  PRI
oraclesgpmdb      12280 oracle        100    1  54.2  92.0mb    104mb  PRI
oraclesgpmdb      12281 oracle      99.6    1  54.4  92.0mb    104mb  PRI
oraclesgpmdb      12304 oracle      99.4    1  57.6  92.0mb    104mb  PRI
ora_m000_sgp      28333 oracle      15.6    1    0.0    131mb    163mb  PRI
perl              18601 root          9.1    1    0.0    712kb    724kb  died
ora_dia0_sgp        6943 oracle        7.6    1    0.0    134mb    136mb SLEEP
java                9109 root          7.4    41    0.7    305mb    759mb SLEEP
df                18605 root          6.2    1    0.0    84kb    160kb  died
glance            19308 quest        6.0    1    0.0  20.1mb  23.9mb STRMS
ocssd.bin          16787 grid          5.1    19    2.8    138mb    138mb SLEEP
vxfsd                342 root          4.5  217  117.3  79.1mb  89.0mb SYSTM


7,通过v$session_longops视图查看rman备份的进度,这部分也是本片博客要阐述的重点。

SQL> /

      SID    SERIAL# OPNAME                              TARGET_DESC          HOURS    CONTEXT      SOFAR  TOTALWORK %_complete
---------- ---------- ----------------------------------- --------------- ---------- ---------- ---------- ---------- ----------
      6440      52989 RMAN: full datafile backup          Set Count      8.30555556          1  35966318  137179774      26.22
      6050      62853 RMAN: full datafile backup          Set Count      6.25861111          1  43865710  136921086      32.04
      3058      52919 RMAN: full datafile backup          Set Count      8.01722222          1  36874224  137048704      26.91
      1548      52825 RMAN: aggregate input              backup          18.7455556          3  115521340 1232568339      9.37
      3806      34287 RMAN: full datafile backup          Set Count      8.19888889          1  36235504  136924544      26.46


OPNAME=aggregate input的这行数据是聚合行,SID为1548,是RMAN的主会话号,它表示当前RAMN中所有任务的整体进度。

OPNAME=full database backup的行为细节行,一共有4个,每个细节行对应一个通道channel。我们的备份启动了4个channel,所以这里就相对4个细节行。如果在这里能看到16个细节行该多好!

totalwor表示当前行需要处理的工作量,sofar表示已经能够完成的工作量,%comlete为sofar/totalwork的百分比。

该视图中聚合行中的总量为1232568339,在RMAN备份中totalwork的单位为blocks(通过UNITS字段能查到)。通过totalwork总大小1232568339 x 8(数据块大小) / 1024/1024/1024 = 9.18TB
%_complete完成度是9.37%。

细节行的工作总量完成后,会把完成进度加到聚合行。在备份过程中每次执行该视图看到细节行的%_complete在增长,而聚合行的%_complete却不会每次随着查询二改变就是这个原因。

备份器件还要关注一下sofar的增长量,如果隔2分钟以上查询该视图发现sofar停止增长了,就应该关注一下v$session_wait视图看看RMAN回话在等待什么事件。


我们看看第二天早上的备份进度,一夜都没备份完

oracle@jccmsdb1:/home/oracle> bdf /orabak
Filesystem          kbytes    used  avail %used Mounted on
/dev/vx/dsk/bakdg/bakvol
                  9961472000 872303704 9018159296    9% /orabak

SQL> /

      SID    SERIAL# OPNAME                              TARGET_DESC          HOURS    CONTEXT      SOFAR  TOTALWORK %_complete
---------- ---------- ----------------------------------- --------------- ---------- ---------- ---------- ---------- ----------
      6050      62853 RMAN: full datafile backup          Set Count      3.25861111          1  95604078  136896374      69.84
      6440      52989 RMAN: full datafile backup          Set Count            2.95          1  97688238  136890366      71.36
      1548      52825 RMAN: aggregate input              backup          58.1516667          3  229714732 1232568339      18.64
      3058      52919 RMAN: full datafile backup          Set Count      3.08333333          1  98322032  136919040      71.81
      3806      34287 RMAN: full datafile backup          Set Count      4.92305556          1  82772078  136895998      60.46

oracle@jccmsdb1:/home/oracle> ls -ltr /orabak
total 1719089792
drwxr-xr-x  2 root      root            96 Oct 10 18:40 lost+found
-rw-r-----  1 oracle    oinstall    98304 Oct 12 10:31 datafile6_ptpks4no_1_1.bak
-rw-r-----  1 oracle    oinstall  21472854016 Oct 12 18:29 sh_db_full_q5pksqkh_1_1
-rw-r-----  1 oracle    oinstall  21472911360 Oct 12 18:32 sh_db_full_q3pksqkf_1_1
-rw-r-----  1 oracle    oinstall  21472804864 Oct 12 18:37 sh_db_full_q2pksqke_1_1
-rw-r-----  1 oracle    oinstall  21472837632 Oct 12 18:41 sh_db_full_q4pksqkg_1_1
-rw-r-----  1 oracle    oinstall  21472772096 Oct 12 20:11 sh_db_full_q5pksqkh_2_1
-rw-r-----  1 oracle    oinstall  21472862208 Oct 12 20:15 sh_db_full_q3pksqkf_2_1
-rw-r-----  1 oracle    oinstall  21472870400 Oct 12 20:30 sh_db_full_q2pksqke_2_1
-rw-r-----  1 oracle    oinstall  21472862208 Oct 12 20:34 sh_db_full_q4pksqkg_2_1
-rw-r-----  1 oracle    oinstall  21472878592 Oct 12 21:54 sh_db_full_q5pksqkh_3_1
-rw-r-----  1 oracle    oinstall  21472796672 Oct 12 22:06 sh_db_full_q3pksqkf_3_1
-rw-r-----  1 oracle    oinstall  21472968704 Oct 12 22:21 sh_db_full_q2pksqke_3_1
-rw-r-----  1 oracle    oinstall  21472919552 Oct 12 22:24 sh_db_full_q4pksqkg_3_1
-rw-r-----  1 oracle    oinstall  21472804864 Oct 12 23:35 sh_db_full_q5pksqkh_4_1
-rw-r-----  1 oracle    oinstall  21472894976 Oct 12 23:58 sh_db_full_q3pksqkf_4_1
-rw-r-----  1 oracle    oinstall  21472813056 Oct 13 00:06 sh_db_full_q4pksqkg_4_1
-rw-r-----  1 oracle    oinstall  21472903168 Oct 13 00:11 sh_db_full_q2pksqke_4_1
-rw-r-----  1 oracle    oinstall  21472993280 Oct 13 01:20 sh_db_full_q5pksqkh_5_1
-rw-r-----  1 oracle    oinstall  21472927744 Oct 13 01:48 sh_db_full_q3pksqkf_5_1
-rw-r-----  1 oracle    oinstall  21472763904 Oct 13 01:50 sh_db_full_q4pksqkg_5_1
-rw-r-----  1 oracle    oinstall  21472878592 Oct 13 02:00 sh_db_full_q2pksqke_5_1
-rw-r-----  1 oracle    oinstall  21472788480 Oct 13 03:09 sh_db_full_q5pksqkh_6_1
-rw-r-----  1 oracle    oinstall  21473034240 Oct 13 03:39 sh_db_full_q4pksqkg_6_1
-rw-r-----  1 oracle    oinstall  21472894976 Oct 13 03:41 sh_db_full_q3pksqkf_6_1
-rw-r-----  1 oracle    oinstall  1160511488 Oct 13 03:47 sh_db_full_q3pksqkf_7_1
-rw-r-----  1 oracle    oinstall  21472829440 Oct 13 03:57 sh_db_full_q2pksqke_6_1
-rw-r-----  1 oracle    oinstall  10962452480 Oct 13 04:06 sh_db_full_q5pksqkh_7_1
-rw-r-----  1 oracle    oinstall  5458075648 Oct 13 04:07 sh_db_full_q4pksqkg_7_1
-rw-r-----  1 oracle    oinstall  3678208000 Oct 13 04:17 sh_db_full_q2pksqke_7_1
-rw-r-----  1 oracle    oinstall  21472804864 Oct 13 05:41 sh_db_full_q6pku1ep_1_1
-rw-r-----  1 oracle    oinstall  21472788480 Oct 13 05:55 sh_db_full_q8pku2je_1_1
-rw-r-----  1 oracle    oinstall  21472772096 Oct 13 05:57 sh_db_full_q7pku2hk_1_1
-rw-r-----  1 oracle    oinstall  21472878592 Oct 13 06:04 sh_db_full_q9pku37d_1_1
-rw-r-----  1 oracle    oinstall  21472780288 Oct 13 07:30 sh_db_full_q6pku1ep_2_1
-rw-r-----  1 oracle    oinstall  21472911360 Oct 13 07:42 sh_db_full_q8pku2je_2_1
-rw-r-----  1 oracle    oinstall  21472944128 Oct 13 07:44 sh_db_full_q7pku2hk_2_1
-rw-r-----  1 oracle    oinstall  21472788480 Oct 13 07:53 sh_db_full_q9pku37d_2_1
-rw-r-----  1 oracle    oinstall  21472903168 Oct 13 09:18 sh_db_full_q6pku1ep_3_1
-rw-r-----  1 oracle    oinstall  21472788480 Oct 13 09:32 sh_db_full_q8pku2je_3_1
-rw-r-----  1 oracle    oinstall  21472780288 Oct 13 09:33 sh_db_full_q7pku2hk_3_1
-rw-r-----  1 oracle    oinstall  21472878592 Oct 13 09:42 sh_db_full_q9pku37d_3_1
-rw-r-----  1 oracle    oinstall  21472985088 Oct 13 11:01 sh_db_full_q6pku1ep_4_1
-rw-r-----  1 oracle    oinstall  21472763904 Oct 13 11:21 sh_db_full_q7pku2hk_4_1
-rw-r-----  1 oracle    oinstall  21472870400 Oct 13 11:27 sh_db_full_q8pku2je_4_1
-rw-r-----  1 oracle    oinstall  21472763904 Oct 13 11:30 sh_db_full_q9pku37d_4_1

此时是周日工作日的正常时段,也是业务高峰期,cpu使用率依然不高才56%而已。
Glance 11.13.007                09:24:26 jccmsdb1      ia64                                                        Current Avg  High
------------------------------------------------------------------------------------------------------------------------------------
CPU  Util  S        SN              NU                          UW                          W                  | 56%  51%  56%
Disk Util  F                                                                                                    F |100%  89%  100%
Mem  Util  S                SU                                              UF  F                              | 72%  72%  72%
Networkil  U                                      UR              R                                              | 56%  56%  56%
------------------------------------------------------------------------------------------------------------------------------------
                                                            PROCESS LIST                                                Users=    9
                        User      CPU %  Thrd  Disk        Memory    Block
Process Name        PID Name    (2400% max) Cnt IO rate    RSS      VSS  On
------------------------------------------------------------------------------------------------------------------------------------
oraclesgpmdb      12326 oracle        100    1  55.0  91.6mb    102mb  PRI
oraclesgpmdb      12304 oracle      99.2    1  52.8  92.3mb    101mb  PRI
oraclesgpmdb      12281 oracle      99.2    1  60.9  91.6mb    101mb  PRI
oraclesgpmdb      12280 oracle      99.0    1  69.4  92.8mb    101mb  PRI
oraclesgpmdb      14200 grid        99.0    1    0.0  56.9mb  58.9mb  PRI
oraclesgpmdb      22978 grid        98.0    1    0.0  93.8mb    105mb  PRI
oraclesgpmdb      22997 grid        90.6    1    0.1  98.6mb    107mb SOCKT
oraclesgpmdb      18182 grid        31.3    1  320.7  55.3mb  56.9mb SYSTM
oraclesgpmdb      14398 grid        30.7    1  801.5  99.5mb    105mb  PRI
oraclesgpmdb        6414 grid        24.1    1    0.0  98.1mb    105mb SOCKT
oraclesgpmdb      23038 grid        23.7    1    6.5  99.7mb    105mb SOCKT
ora_lms1_sgp        6965 oracle      19.3    1    0.0  95.9mb    102mb SLEEP
ora_lms0_sgp        6963 oracle      19.0    1    0.0  93.9mb    102mb SLEEP
oraclesgpmdb      29596 grid        13.3    1    6.9  80.2mb  85.3mb SOCKT
oraclesgpmdb      230

--------------------------------------推荐阅读 --------------------------------------

RMAN 配置归档日志删除策略

Oracle基础教程之通过RMAN复制数据库

RMAN备份策略制定参考内容

RMAN备份学习笔记

Oracle数据库备份加密 RMAN加密

--------------------------------------分割线 --------------------------------------

本文永久更新链接地址:

相关内容