rman一直是我在Oracle里面最不懂的一块。
一说起rman我就如一个三岁小孩看高等代数一样,太深奥了,听了云里雾里。
所以今天开始着重学习一下rman。
首先做一个全库备份:
[oracle@localhost ~]$ rman
Recovery Manager: Release 10.2.0.1.0 - Production on 星期四 8月 6 21:58:35 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
RMAN> connect target;
connected to target database: ORCL (DBID=1213195129)
RMAN> backup database;
Starting backup at 06-8月 -09
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=143 devtype=DISK
............
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=143 devtype=DISK
............
很成功。不过备份文件被放到哪里去了呢?由于我预计全备份会占用很大的空间(包括数据文件等)。
所以我ctrl+c掉了。结果本来应该可以在$ORACLE_HOME/db_1/dbs下面的备份文件没有找到。
为什么?难道找错路径了?
于是找google,查看如何设置rman备份的默认路径,不过配置命令在我看来有点长了:
RMAN> configure channel device type disk format '/data/backup/%d_db_%u';
old RMAN configuration parameters:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/data/arch/%d_db_%u';
new RMAN configuration parameters:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/data/backup/%d_db_%u';
new RMAN configuration parameters are successfully stored
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/data/arch/%d_db_%u';
new RMAN configuration parameters:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/data/backup/%d_db_%u';
new RMAN configuration parameters are successfully stored
于是再进行全库备份,此时可以发现/data分区的空间在不断增长了:
[oracle@localhost ~]$ while true; do df -ah /data/ | grep /data; sleep 1; done
/dev/sdd 7.9G 505M 7.0G 7% /data
/dev/sdd 7.9G 507M 7.0G 7% /data
/dev/sdd 7.9G 509M 7.0G 7% /data
/dev/sdd 7.9G 511M 7.0G 7% /data
/dev/sdd 7.9G 513M 7.0G 7% /data
/dev/sdd 7.9G 515M 7.0G 7% /data
/dev/sdd 7.9G 516M 7.0G 7% /data
/dev/sdd 7.9G 518M 7.0G 7% /data
/dev/sdd 7.9G 520M 7.0G 7% /data
/dev/sdd 7.9G 505M 7.0G 7% /data
/dev/sdd 7.9G 507M 7.0G 7% /data
/dev/sdd 7.9G 509M 7.0G 7% /data
/dev/sdd 7.9G 511M 7.0G 7% /data
/dev/sdd 7.9G 513M 7.0G 7% /data
/dev/sdd 7.9G 515M 7.0G 7% /data
/dev/sdd 7.9G 516M 7.0G 7% /data
/dev/sdd 7.9G 518M 7.0G 7% /data
/dev/sdd 7.9G 520M 7.0G 7% /data
从这里也可以看出每秒的磁盘写在2M左右。
而且通过观察磁盘读写情况,也可以看出,此时这两个分区的读写很厉害:
[oracle@localhost backup]$ iostat -xtc 1 /dev/sd[cd]
Linux 2.6.18-8.el5 (localhost.localdomain) 08/06/2009 _i686_ (1 CPU)
Linux 2.6.18-8.el5 (localhost.localdomain) 08/06/2009 _i686_ (1 CPU)
08/06/2009 10:35:49 PM
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 10.10 89.90 0.00 0.00
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 10.10 89.90 0.00 0.00
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sdc 0.00 4.04 0.00 0.00 0.00 0.00 0.00 2.19 0.00 0.00 101.31
sdd 0.00 4961.62 0.00 121.21 0.00 38270.71 315.73 145.10 1194.12 8.36 101.31
sdc 0.00 4.04 0.00 0.00 0.00 0.00 0.00 2.19 0.00 0.00 101.31
sdd 0.00 4961.62 0.00 121.21 0.00 38270.71 315.73 145.10 1194.12 8.36 101.31
08/06/2009 10:35:50 PM
avg-cpu: %user %nice %system %iowait %steal %idle
0.98 0.00 9.80 89.22 0.00 0.00
avg-cpu: %user %nice %system %iowait %steal %idle
0.98 0.00 9.80 89.22 0.00 0.00
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 2.95 0.00 0.00 98.33
sdd 0.00 1862.75 0.00 116.67 0.00 36705.88 314.62 123.91 1211.56 8.43 98.33
sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 2.95 0.00 0.00 98.33
sdd 0.00 1862.75 0.00 116.67 0.00 36705.88 314.62 123.91 1211.56 8.43 98.33
08/06/2009 10:35:51 PM
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 8.08 91.92 0.00 0.00
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 8.08 91.92 0.00 0.00
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sdc 0.00 3.03 1.01 3.03 258.59 80.81 84.00 2.68 2134.25 247.25 99.90
sdd 0.00 23.23 0.00 82.83 0.00 25842.42 312.00 27.88 1175.39 12.02 99.60
其中sdc是数据所在分区,sdd是备份所在分区。
sdc 0.00 3.03 1.01 3.03 258.59 80.81 84.00 2.68 2134.25 247.25 99.90
sdd 0.00 23.23 0.00 82.83 0.00 25842.42 312.00 27.88 1175.39 12.02 99.60
其中sdc是数据所在分区,sdd是备份所在分区。
由于可以预计的备份空间会在7G左右,所以没有继续备份下去。也做ctrl+c取消掉了。
这时,之前为什么找不到备份文件的原因找到了:如果中途取消备份,rman会将之前
的文件删除掉。保证不会留有垃圾文件。这个与我平时见到的一些操作不同,如果中
途被取消,文件会仍旧放在那边。
是否还有其他的显式指定备份路径呢?
继续google,果然找到一个:
RMAN> backup database format '/data/backup/%U.RMN';
然后也按照这个路径进行备份了。
需要注意的是,以上备份都是在archivelog模式下做的。如果在noarchivelog模式下,
则会报:非归档模式下不能备份的错误。
好了,以上是一个简单的全库备份及备份文件路径设置操作。
--------------------------------------------华丽的分割线----------------------------------------------
然后开始学习rman的第一步:
查看配置参数:
RMAN> show all;
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/data/backup/%d_db_%u';
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/oracle/product/10.2.0/db_1/dbs/snapcf_orcl.f'; # default
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/data/backup/%d_db_%u';
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/oracle/product/10.2.0/db_1/dbs/snapcf_orcl.f'; # default