实例:
1:排除指定的表空间不备份
RMAN> configure exclude for tablespace newadunion; --不备份newadunion表空间,加clear清除配置
tablespace NEWADUNION will be excluded from future whole database backups
new RMAN configuration parameters are successfully stored
run{
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
backup database format '/data/backup/rmanback/db_%d_%T_%U';
crosscheck backup;
release channel ch1;
release channel ch2;
}
allocated channel: ch1
channel ch1: sid=98 devtype=DISK
allocated channel: ch2
channel ch2: sid=119 devtype=DISK
Starting backup at 12-6月 -12
file 5 is excluded from whole database backup
file 13 is excluded from whole database backup
file 14 is excluded from whole database backup
file 15 is excluded from whole database backup
file 16 is excluded from whole database backup
file 17 is excluded from whole database backup
file 18 is excluded from whole database backup
file 19 is excluded from whole database backup
file 20 is excluded from whole database backup
file 21 is excluded from whole database backup
channel ch1: starting full datafile backupset
channel ch1: specifying datafile(s) in backupset
input datafile fno=00023 name=/data/oradata/eagaodb/newadunion_log01.dbf
input datafile fno=00022 name=/data/oradata/eagaodb/smsway01.dbf
input datafile fno=00002 name=/data/oradata/eagaodb/eaindex_data02.dbf
input datafile fno=00007 name=/data/oradata/eagaodb/system02.dbf
input datafile fno=00008 name=/data/oradata/eagaodb/wz_data01.dbf
input datafile fno=00010 name=/data/oradata/eagaodb/eaindex_data.dbf
input datafile fno=00003 name=/data/oradata/eagaodb/sysaux01.dbf
channel ch1: starting piece 1 at 12-6月 -12
channel ch2: starting full datafile backupset
channel ch2: specifying datafile(s) in backupset
input datafile fno=00006 name=/log/Oracle/undotbs2.dbf
input datafile fno=00001 name=/data/oradata/eagaodb/system01.dbf
input datafile fno=00009 name=/data/oradata/eagaodb/flink_data.dbf
input datafile fno=00004 name=/data/oradata/eagaodb/users01.dbf
input datafile fno=00011 name=/data/oradata/eagaodb/eaindex_idx01.dbf
input datafile fno=00012 name=/data/oradata/eagaodb/chris01.dbf
channel ch2: starting piece 1 at 12-6月 -12
channel ch2: finished piece 1 at 12-6月 -12
piece handle=/data/backup/rmanback/db_EAGAODB_20120612_0cndc5v3_1_1 tag=TAG20120612T165915 comment=NONE
channel ch2: backup set complete, elapsed time: 00:06:36
channel ch2: starting full datafile backupset
channel ch2: specifying datafile(s) in backupset
including current control file in backupset
channel ch2: starting piece 1 at 12-6月 -12
channel ch2: finished piece 1 at 12-6月 -12
piece handle=/data/backup/rmanback/db_EAGAODB_20120612_0dndc6bf_1_1 tag=TAG20120612T165915 comment=NONE
channel ch2: backup set complete, elapsed time: 00:00:03
channel ch2: starting full datafile backupset
channel ch2: specifying datafile(s) in backupset
including current SPFILE in backupset
channel ch2: starting piece 1 at 12-6月 -12
channel ch2: finished piece 1 at 12-6月 -12
piece handle=/data/backup/rmanback/db_EAGAODB_20120612_0endc6bj_1_1 tag=TAG20120612T165915 comment=NONE
channel ch2: backup set complete, elapsed time: 00:00:02
channel ch1: finished piece 1 at 12-6月 -12
piece handle=/data/backup/rmanback/db_EAGAODB_20120612_0bndc5v3_1_1 tag=TAG20120612T165915 comment=NONE
channel ch1: backup set complete, elapsed time: 00:11:27
Finished backup at 12-6月 -12
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data/backup/rmanback/db_EAGAODB_20120612_0cndc5v3_1_1 recid=5 stamp=785782755
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data/backup/rmanback/db_EAGAODB_20120612_0dndc6bf_1_1 recid=6 stamp=785783151
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data/backup/rmanback/db_EAGAODB_20120612_0endc6bj_1_1 recid=7 stamp=785783156
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data/backup/rmanback/db_EAGAODB_20120612_0bndc5v3_1_1 recid=8 stamp=785782755
Crosschecked 4 objects
released channel: ch1
released channel: ch2
2:监控执行的进度:
SQL> select sid,SERIAL# ,CONTEXT,SOFAR,TOTALWORK,round(SOFAR/TOTALWORK*100,2) "_%"
from v$session_longops where OPNAME like 'RMAN%' and SOFAR<>TOTALWORK and TOTALWORK<>0;
no rows selected
SQL> /
SID SERIAL# CONTEXT SOFAR TOTALWORK _%
---- ---------- ---------- ---------- --------------- -----
119 1973 1 276799 3031040 9.13
99 155 11 0 7963084 0
98 75 1 106489 4930304 2.16
SQL> /
SID SERIAL# CONTEXT SOFAR TOTALWORK _%
---- ---------- ---- ---------- ---------- ----------
119 1973 1 276799 3031040 13.14
99 155 11 0 7963084 0
98 75 1 106489 4930304 8.24
查看备份集的大小:
[oracle@st8cserver16 ~]$ ls /data/backup/rmanback/ -lh
total 30G
-rw-r----- 1 oracle oinstall 7.6G Jun 12 17:10 db_EAGAODB_20120612_0bndc5v3_1_1
-rw-r----- 1 oracle oinstall 23G Jun 12 17:05 db_EAGAODB_20120612_0cndc5v3_1_1
-rw-r----- 1 oracle oinstall 25M Jun 12 17:05 db_EAGAODB_20120612_0dndc6bf_1_1
-rw-r----- 1 oracle oinstall 96K Jun 12 17:05 db_EAGAODB_20120612_0endc6bj_1_1
3:以上是10.2.0.1备份完毕,注意11g可以使用RMAN> backup validate database 计算RMAN备份集的大小,如:
[oracle@mlydserver22 ~]$ rman target /
Recovery Manager: Release 11.2.0.1.0 - Production on Mon Jun 11 16:52:33 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database: EAGAODB (DBID=1839368230)
RMAN> backup validate datafile 12;
Starting backup at 11-JUN-12
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=774 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00012 name=/data/oradata/eagaodb/NEWADUNION08.dbf
channel ORA_DISK_1: backup set complete, elapsed time: 00:05:56
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ ---------- ------------ --------------- ---------------- --------------
12 OK 0 7 4194302 18169151887
File Name: /data/oradata/eagaodb/NEWADUNION08.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 4148094
Index 0 39270
Other 0 6931
Finished backup at 11-JUN-12
sys@EAGAODB> show parameter db_block_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_size integer 8192
可以看出RMAN备份datafile 12时,需要(4194302-7)*8/1024/1024=31.99G,如果要降低RMAN备份大小,可以考虑shrink释放一些空间,以及启用RMAN的压缩功能:
run{
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
backup as compressed backupset database format '/data/backup/rmanback/db_%d_%T_%U';
crosscheck backup;
release channel ch1;
release channel ch2;
}
using target database control file instead of recovery catalog
allocated channel: ch1
channel ch1: sid=136 devtype=DISK
allocated channel: ch2
channel ch2: sid=99 devtype=DISK
Starting backup at 12-6月 -12
file 5 is excluded from whole database backup
file 13 is excluded from whole database backup
file 14 is excluded from whole database backup
file 15 is excluded from whole database backup
file 16 is excluded from whole database backup
file 17 is excluded from whole database backup
file 18 is excluded from whole database backup
file 19 is excluded from whole database backup
file 20 is excluded from whole database backup
file 21 is excluded from whole database backup
channel ch1: starting compressed full datafile backupset
channel ch1: specifying datafile(s) in backupset
input datafile fno=00023 name=/data/oradata/eagaodb/newadunion_log01.dbf
input datafile fno=00022 name=/data/oradata/eagaodb/smsway01.dbf
input datafile fno=00002 name=/data/oradata/eagaodb/eaindex_data02.dbf
input datafile fno=00007 name=/data/oradata/eagaodb/system02.dbf
input datafile fno=00008 name=/data/oradata/eagaodb/wz_data01.dbf
input datafile fno=00010 name=/data/oradata/eagaodb/eaindex_data.dbf
input datafile fno=00003 name=/data/oradata/eagaodb/sysaux01.dbf
channel ch1: starting piece 1 at 12-6月 -12
channel ch2: starting compressed full datafile backupset
channel ch2: specifying datafile(s) in backupset
input datafile fno=00006 name=/log/oracle/undotbs2.dbf
input datafile fno=00001 name=/data/oradata/eagaodb/system01.dbf
input datafile fno=00009 name=/data/oradata/eagaodb/flink_data.dbf
input datafile fno=00004 name=/data/oradata/eagaodb/users01.dbf
input datafile fno=00011 name=/data/oradata/eagaodb/eaindex_idx01.dbf
input datafile fno=00012 name=/data/oradata/eagaodb/chris01.dbf
channel ch2: starting piece 1 at 12-6月 -12
channel ch1: finished piece 1 at 12-6月 -12
piece handle=/data/backup/rmanback/db_EAGAODB_20120612_0fndcc4a_1_1 tag=TAG20120612T184426 comment=NONE
channel ch1: backup set complete, elapsed time: 00:09:55
channel ch1: starting compressed full datafile backupset
channel ch1: specifying datafile(s) in backupset
including current control file in backupset
channel ch1: starting piece 1 at 12-6月 -12
channel ch1: finished piece 1 at 12-6月 -12
piece handle=/data/backup/rmanback/db_EAGAODB_20120612_0hndccmt_1_1 tag=TAG20120612T184426 comment=NONE
channel ch1: backup set complete, elapsed time: 00:00:02
channel ch1: starting compressed full datafile backupset
channel ch1: specifying datafile(s) in backupset
including current SPFILE in backupset
channel ch1: starting piece 1 at 12-6月 -12
channel ch1: finished piece 1 at 12-6月 -12
piece handle=/data/backup/rmanback/db_EAGAODB_20120612_0indccmv_1_1 tag=TAG20120612T184426 comment=NONE
channel ch1: backup set complete, elapsed time: 00:00:02
channel ch2: finished piece 1 at 12-6月 -12
piece handle=/data/backup/rmanback/db_EAGAODB_20120612_0gndcc4a_1_1 tag=TAG20120612T184426 comment=NONE
channel ch2: backup set complete, elapsed time: 00:23:24
Finished backup at 12-6月 -12
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data/backup/rmanback/db_EAGAODB_20120612_0fndcc4a_1_1 recid=9 stamp=785789066
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data/backup/rmanback/db_EAGAODB_20120612_0hndccmt_1_1 recid=10 stamp=785789662
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data/backup/rmanback/db_EAGAODB_20120612_0indccmv_1_1 recid=11 stamp=785789664
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/data/backup/rmanback/db_EAGAODB_20120612_0gndcc4a_1_1 recid=12 stamp=785789066
Crosschecked 4 objects
released channel: ch1
released channel: ch2
观察:
top - 18:51:52 up 817 days, 7:17, 3 users, load average: 2.20, 1.62, 0.78 --整体压力不大
Tasks: 333 total, 2 running, 319 sleeping, 7 stopped, 5 zombie
Cpu(s): 20.5%us, 1.5%sy, 0.0%ni, 74.3%id, 3.4%wa, 0.1%hi, 0.1%si, 0.0%st
Mem: 4031676k total, 4000272k used, 31404k free, 2640k buffers
Swap: 8193108k total, 952108k used, 7241000k free, 3213644k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
26746 oracle 25 0 1709m 56m 26m D 92.7 1.4 6:16.53 oracle --CPU占用比较大
26745 oracle 18 0 1709m 56m 27m R 80.7 1.4 4:41.24 oracle
353 root 10 -5 0 0 0 S 2.0 0.0 887:48.89 kswapd0
2156 root 11 -5 0 0 0 S 1.0 0.0 78:52.57 kjournald
26455 root 15 0 0 0 0 S 0.7 0.0 0:00.81 pdflush
[oracle@st8cserver16 backup]$ ls rmanback/ -lht
total 8.5G
-rw-r----- 1 oracle oinstall 7.2G Jun 12 19:07 db_EAGAODB_20120612_0gndcc4a_1_1
-rw-r----- 1 oracle oinstall 96K Jun 12 18:54 db_EAGAODB_20120612_0indccmv_1_1
-rw-r----- 1 oracle oinstall 2.1M Jun 12 18:54 db_EAGAODB_20120612_0hndccmt_1_1
-rw-r----- 1 oracle oinstall 1.4G Jun 12 18:54 db_EAGAODB_20120612_0fndcc4a_1_1
和上面的备份比较:
无压缩时间:00:06:36+00:00:03+00:00:02+00:11:2=18分钟左右,备份集为30G
有压缩时间:00:09:55+00:00:02+00:00:02+00:23:24=34分钟左右 备份集为8.5G
总结:时间将近多了2倍,但占用空间少了将近4倍;系统整体压力不大,CPU占比大。
4:证明RMAN备份集远远大于数据大小:
[oracle@st8cserver16 /]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 6月 11 14:12:41 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> select sum1-sum2 from (select sum(bytes)/1024/1024 sum1 from dba_data_files), (select sum(bytes)/1024/1024 sum2 from dba_free_space);
SUM1-SUM2
----------
109394.375
SQL> select * from (select owner,segment_name,TABLESPACE_NAME,BYTES/1024/1024 M from dba_segments order by BYTES desc)a where rownum<20;
OWNER
------------------------------
SEGMENT_NAME
---------------------------------------------------------------------------------
TABLESPACE_NAME M
------------------------------ ----------
WONDER
LIANMENG_DATA_LOG_STAT301201
NEWADUNION 47628
WONDER
LIANMENG_DATA_LOG_STAT201201
NEWADUNION 13445
WONDER
LIANMENG_DATA_LOG_STAT12
NEWADUNION 12253
J10DBATEST
EXT_FACT_MCHN_VST
NEWADUNION 11511
SQL> truncate table wonder.LIANMENG_DATA_LOG_STAT301201;
Table truncated.
SQL> truncate table wonder.LIANMENG_DATA_LOG_STAT201201;
Table truncated.
SQL> truncate table wonder.LIANMENG_DATA_LOG_STAT12;
Table truncated.
SQL> select sum1-sum2 from (select sum(bytes)/1024/1024 sum1 from dba_data_files), (select sum(bytes)/1024/1024 sum2 from dba_free_space);
SUM1-SUM2
----------
24850.375
SQL> select COUNT(*) from dba_recyclebin;
COUNT(*)
----------
1302
SQL> purge dba_recyclebin;
DBA Recyclebin purged.
SQL> select COUNT(*) from dba_recyclebin;
COUNT(*)
----------
0
SQL> create tablespace newadunion_log datafile '/data/oradata/eagaodb/newadunion_log01.dbf' size 20g;
Tablespace created.
RMAN备份:
[oracle@st8cserver16 backup]$ rman target /
Recovery Manager: Release 10.2.0.1.0 - Production on 星期一 6月 11 15:07:10 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: EAGAODB (DBID=1798905771)
run{
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
backup database format '/data/backup/rmanback/db_%d_%T_%U';
crosscheck backup;
release channel ch1;
release channel ch2;
}
using target database control file instead of recovery catalog
allocated channel: ch1
channel ch1: sid=125 devtype=DISK
allocated channel: ch2
channel ch2: sid=126 devtype=DISK
Starting backup at 11-6月 -12
channel ch1: starting full datafile backupset
channel ch1: specifying datafile(s) in backupset
input datafile fno=00018 name=/data/oradata/eagaodb/newadunion07.dbf
input datafile fno=00006 name=/log/oracle/undotbs2.dbf
input datafile fno=00019 name=/data/oradata/eagaodb/newadunion08.dbf
input datafile fno=00020 name=/data/oradata/eagaodb/newadunion09.dbf
input datafile fno=00021 name=/data/oradata/eagaodb/newadunion10.dbf
input datafile fno=00005 name=/data/oradata/eagaodb/newadunion01.dbf
input datafile fno=00013 name=/data/oradata/eagaodb/newadunion02.dbf
input datafile fno=00014 name=/data/oradata/eagaodb/newadunion03.dbf
input datafile fno=00015 name=/data/oradata/eagaodb/newadunion04.dbf
input datafile fno=00016 name=/data/oradata/eagaodb/newadunion05.dbf
input datafile fno=00017 name=/data/oradata/eagaodb/newadunion06.dbf
input datafile fno=00023 name=/data/oradata/eagaodb/newadunion_log01.dbf
channel ch1: starting piece 1 at 11-6月 -12
channel ch2: starting full datafile backupset
channel ch2: specifying datafile(s) in backupset
input datafile fno=00022 name=/data/oradata/eagaodb/smsway01.dbf
input datafile fno=00007 name=/data/oradata/eagaodb/system02.dbf
input datafile fno=00008 name=/data/oradata/eagaodb/wz_data01.dbf
input datafile fno=00010 name=/data/oradata/eagaodb/eaindex_data.dbf
input datafile fno=00012 name=/data/oradata/eagaodb/chris01.dbf
channel ch2: starting piece 1 at 11-6月 -12
channel ch2: finished piece 1 at 11-6月 -12
piece handle=/data/backup/rmanback/db_EAGAODB_20120611_02nd9bae_1_1 tag=TAG20120611T151213 comment=NONE
channel ch2: backup set complete, elapsed time: 00:01:35
channel ch2: starting full datafile backupset
channel ch2: specifying datafile(s) in backupset
input datafile fno=00002 name=/data/oradata/eagaodb/eaindex_data02.dbf
input datafile fno=00003 name=/data/oradata/eagaodb/sysaux01.dbf
input datafile fno=00001 name=/data/oradata/eagaodb/system01.dbf
input datafile fno=00009 name=/data/oradata/eagaodb/flink_data.dbf
input datafile fno=00004 name=/data/oradata/eagaodb/users01.dbf
input datafile fno=00011 name=/data/oradata/eagaodb/eaindex_idx01.dbf
channel ch2: starting piece 1 at 11-6月 -12
channel ch2: finished piece 1 at 11-6月 -12
piece handle=/data/backup/rmanback/db_EAGAODB_20120611_03nd9bdd_1_1 tag=TAG20120611T151213 comment=NONE
channel ch2: backup set complete, elapsed time: 00:02:05
channel ch2: starting full datafile backupset
channel ch2: specifying datafile(s) in backupset
including current control file in backupset
channel ch2: starting piece 1 at 11-6月 -12
channel ch2: finished piece 1 at 11-6月 -12
piece handle=/data/backup/rmanback/db_EAGAODB_20120611_04nd9bha_1_1 tag=TAG20120611T151213 comment=NONE
channel ch2: backup set complete, elapsed time: 00:00:04
channel ch2: starting full datafile backupset
channel ch2: specifying datafile(s) in backupset
including current SPFILE in backupset
channel ch2: starting piece 1 at 11-6月 -12
channel ch2: finished piece 1 at 11-6月 -12
piece handle=/data/backup/rmanback/db_EAGAODB_20120611_05nd9bhe_1_1 tag=TAG20120611T151213 comment=NONE
channel ch2: backup set complete, elapsed time: 00:00:02
user interrupt received
Finished backup at 11-6月 -12
user interrupt received
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03099: job cancelled at user request
备份集对应占用的空间:
[oracle@st8cserver16 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda8 446G 361G 63G 86% /data
[oracle@st8cserver16 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda8 446G 365G 59G 87% /data
[oracle@st8cserver16 ~]$ df -h
/dev/sda8 446G 369G 55G 88% /data
[oracle@st8cserver16 ~]$ du -sh /data/backup/rmanback/
46G /data/backup/rmanback/
[oracle@st8cserver16 ~]$ du -sh /data/backup/rmanback/
51G /data/backup/rmanback/
在取消备份之前,只有/data只有55G剩余空间,此时看看还剩下多少工作量没做:
SQL> select sid,SERIAL# ,CONTEXT,SOFAR,TOTALWORK,round(SOFAR/TOTALWORK*100,2) "_%"
from v$session_longops where OPNAME like 'RMAN%' and SOFAR<>TOTALWORK and TOTALWORK<>0;
SID SERIAL# CONTEXT SOFAR TOTALWORK _%
---------- ---------- ---------- ---------- ---------- ----------
125 27 1 6187576 36903680 16.77 --只备份了16.77%数据
137 44 3 8318776 39420364 21.1 --只备份了21.1%数据
SQL> select sid,SERIAL# ,CONTEXT,SOFAR,TOTALWORK,round(SOFAR/TOTALWORK*100,2) "_%"
2 from v$session_longops where OPNAME like 'RMAN%' and SOFAR<>TOTALWORK and TOTALWORK<>0;
SID SERIAL# CONTEXT SOFAR TOTALWORK _%
---------- ---------- ---------- ---------- ---------- ----------
125 27 1 6286392 36903680 17.03
137 44 3 39420363 39420364 100 --取消后
SQL> select sid,SERIAL# ,CONTEXT,SOFAR,TOTALWORK,round(SOFAR/TOTALWORK*100,2) "_%"
2 from v$session_longops where OPNAME like 'RMAN%' and SOFAR<>TOTALWORK and TOTALWORK<>0;
no rows selected --再过一分钟后消失
此时再看备份集多大:
[oracle@st8cserver16 ~]$ df -h |grep data
/dev/sda8 446G 327G 97G 78% /data
[oracle@st8cserver16 ~]$ du -sh /data/backup/rmanback/
3.2G /data/backup/rmanback/
发现取消后,ORACLE删除了那个最大的备份集
由上面的数据可以看出:基本增长1%,备份集就要加大1G,所以完成备份,至少需要200G左右的磁盘空间,但实际的数据量只有
SQL> select sum1-sum2 from (select sum(bytes)/1024/1024 sum1 from dba_data_files), (select sum(bytes)/1024/1024 sum2 from dba_free_space);
SUM1-SUM2
----------
24850.5625 --24G左右
所以结论:RMAN会备份之前分配过了的但现在没数据的空间也会备份,所以要建立多个表空间,分别存放需要备份,与不需要备份的数据。
本文转自xiaocao1314051CTO博客,原文链接:http://blog.51cto.com/xiaocao13140/1937215 ,如需转载请自行联系原作者