通过前面的若干,咱们已经了解并尝试了rman备份的一些命令,可是在实际环境中,不可能每次备份都要求DBA一条命令一条命令来敲,经过前章的学习咱们已经立志必定要优化的干活,因此咱们应该写好一段脚本,而后放在服务器端定时执行。DBA只须要时不时看看备份的结果就成了。linux
在写脚本以前,咱们先明确一下咱们的目标:web
1 、天天夜间1点执行;sql
2 、数据库全备,同时备份控制文件及归档日志文件,备份文件保存至:D:\backup\目录下,并在完成归档日志文件备份后,自动删除已备份的归档日志;数据库
3 、备份保留7天,过时则自动删除;bash
4 、保留操做日志备查;服务器
以Windows环境为例(linux环境下与此基本相似,rman的脚本您甚至连改都不用改,就把调用rman脚本的命令行改改就好了):oracle
1 、编写rman批处理文件学习
保存至: E:\oracleScript\backup\database_backup_jssweb.rman测试
RUN { CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ¨d:/backup/%F¨; ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT ¨d:/backup/%U¨; BACKUP DATABASE SKIP INACCESSIBLE FILESPERSET 10 PLUS ARCHIVELOG FILESPERSET 20 DELETE ALL INPUT; RELEASE CHANNEL CH1; } ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK; CROSSCHECK BACKUPSET; DELETE NOPROMPT OBSOLETE;
上述的各项命令均在前面几个章节中提到过,若是有看着眼生的话,再回去翻翻前面。命令是都知晓地,可能有几个参数会不明白其意义,好比:BACKUP命令中的SKIT INACCESSIBLE参数,看下面:优化
SKIP 选项 说明
SKIP INACCESSIBLE :表示跳过不可读的文件。咱们知道一些offline的数据文件只要存在于磁盘上就仍然可被读取,可是可能有些文件已经被删除或移到它处形成不可读,加上这个参数就会跳过这些文件;
SKIP OFFLINE :跳过offline的数据文件;
SKIP READONLY :跳过那些所在表空间为read-only的数据文件;
注意,你从网上搜索rman备份脚本,可能有些脚本中会出现一项:sql ¨alter system archive log current¨;这句是让archivelog日志归档,实际上彻底不必,咱们在第三节的时候讲过,经过plus archivelog方式备份时,rman会自动对当前的archivelog进行归档。
2 、编写dos批处理
保存至:E:\oracleScript\backup\database_backup_jssweb.bat
设定要备份的数据库sid为jssweb,将日志按照日期输出到 E:\oracleScript\backup\logs\ 目录。
set oracle_sid=jssweb rman target / msglog E:\oracleScript\backup\logs\%date:~0,10%.log cmdfile=E:\oracleScript\backup\database_backup_jssweb.rman
3 、设定执行计划
控制面板->任务计划中添加计划,运行E:\oracleScript\backup\database_backup_jssweb.bat,设定日程安排中的时间。
竣工!
说是实战,实际上演练的味道依然浓厚,谁让咱这是在测试呢。上述脚本已初具雏形,固然还应该再增长一些更合理的配置,好比根据您的数据库大小,适当调整通道数量,以及加上日期的判断,根据时间进行增量备份。