2018-03-01 Oracle 宅必备
这节讲日常用到的RMAN备份的相关脚本
## RMAN设置
```
CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 1 DAYS;
```
## 备份到磁盘
### 1. 压缩并备份到FRA
这是样例,下面脚本在这上面做修改
```
vim /home/oracle/backup.sh
source ~/.bash_profile
rman target / <<EOF
RUN {
crosscheck archivelog all;
delete noprompt expired archivelog all;
crosscheck backup;
delete noprompt expired backup;
report obsolete;
delete noprompt obsolete;
allocate channel c1 type disk;
allocate channel c2 type disk;
BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;
backup current controlfile;
release channel c1;
release channel c2;
}
EOF
exit
```
### 2. 备份数据文件到自定义位置
```
RUN {
crosscheck archivelog all;
delete noprompt expired archivelog all;
crosscheck backup;
delete noprompt expired backup;
report obsolete;
delete noprompt obsolete;
allocate channel c1 type disk;
backup format 'E:\BAK\LEDFULLBAK\LEDMES_dbf_%U' filesperset 5 database;
backup format 'E:\BAK\LEDFULLBAK\LEDMES_arc_%U' filesperset 10 archivelog all;
backup format 'E:\BAK\LEDFULLBAK\LEDMES_ctl_%U' current controlfile;
release channel c1;
}
```
### 3. 备份并删除归档日志
```
RMAN> backup archivelog all delete input format '/u01/app/oracle/rmanbak/lf_%d_%U';
```
### 4. 增量备份
```
BACKUP INCREMENTAL LEVEL 0 DATABASE;
BACKUP INCREMENTAL LEVEL 1 DATABASE;
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;
```
### 5. 脚本调用ramn备份文件
```
rman target sys/system nocatalog CMDFILE 'E:\BAK\LEDFULLBAK\rman_full.txt' log='E:\BAK\log\full_backup_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%".log'
```
## 备份到磁带
这里我使用的是HP DP进行的备份
主要是前面分配通道时候有所不同
```
run {
allocate channel 'dev_0' type 'sbt_tape'
parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=ased3,OB2BARLIST=Daily_ased3)';
allocate channel 'dev_1' type 'sbt_tape'
parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=ased3,OB2BARLIST=Daily_ased3)';
}
```