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