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)';

}

```