本次演示在win2008服务器上,进行oracle的expdp备份和rman备份,并制定相应的计划任务
1、expdp备份
expdp备份策略:
保留7天的expdp导出文件:每天19点删除7天前的expdp备份,每天20点expdp备份。
--EXPDP文件备份路径: D:\mdp_db_backup\mdp_db_expdpbak\expdpfile\
--EXPDP备份脚本路径: D:\mdp_db_backup_scripts\dbexpdp_scripts\
--设置directory
SQL> CREATE OR REPLACE DIRECTORY expdir as 'D:\mdp_db_backup\mdp_db_expdpbak\expdpfile\';
--每天19:00执行删除的脚本 D:\mdp_db_backup_scripts\dbexpdp_scripts\rm_mdpexpdp.bat
set DaysAgo=7
set LogPath=D:\mdp_db_backup\mdp_db_expdpbak\expdpfile\
forfiles -p %LogPath% -m *.DMP -d -%DaysAgo% -c "cmd /c del /q @FILE"
注释:这里使用了
forfiles
来删除
7
天前的文件
参考 http://www.cnblogs.com/kerrycode/p/4164268.html
--每天20:00执行的备份脚本 D:\mdp_db_backup_scripts\dbexpdp_scripts\mdpexpdp.bat
set name=%date:~0,4%-%date:~5,2%-%date:~8,2%
C:\oracle\MDP\11203\BIN\expdp.exe system/system directory=expdir dumpfile=scott_%name% logfile=scott_%name% schemas=scott compression=ALL EXCLUDE=STATISTICS
2、计划任务配置
下面以20:00的expdp备份为例,配置计划任务如下:
(1)控制面板—管理工具—任务计划程序
(2)创建任务— 写入计划任务名称, 设定“不管用户是否登录都要运行” 选项
(3)设定 触发器 中的计划时间,这里是每天的20:00点执行
(4)设定 操作 中要执行的bat脚本
(这里选择的就是上述的 D:\mdp_db_backup_scripts\dbexpdp_scripts\mdpexpdp.bat脚本)
设置好之后会出现一个计划任务,如下:
每天19:00执行删除的脚本D:\mdp_db_backup_scripts\dbexpdp_scripts\rm_mdpexpdp.bat
的计划任务参照如上图配置即可,这里不再演示。
3、rman备份
rman备份策略:
可以恢复7天内的数据:每天22点删除多余和无效的备份,每天23点备份归档日志,每周三、六的23:50进行数据库的0级备份。
rman备份文件目录:
--归档文件备份路径: D:\mdp_db_backup\mdp_db_rmanbak\arch\
--控制文件备份路径: D:\mdp_db_backup\mdp_db_rmanbak\controlfile\
--数据库文件备份路径: D:\mdp_db_backup\mdp_db_rmanbak\dbfile\
--数据库文件备份日志路径:D:\mdp_db_backup\mdp_db_rmanbak\dbfile_log\
--RMAN备份脚本路径:D:\mdp_db_backup_scripts\dbrman_scripts\
(1)rman配置
CONFIGURE RETENTION POLICY TO RECOVERYWINDOW OF 7 DAYS; --恢复7天内数据的rman备份
CONFIGURE CONTROLFILE AUTOBACKUP ON; --控制文件自动备份
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'D:\mdp_db_backup\mdp_db_rmanbak\controlfile\%F'; --控制文件自动目录
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\mdp_db_backup\mdp_db_rmanbak\controlfile\snapcf_MDP.f'; --控制文件快照
(2)rman脚本
--删除多余和无效备份 D:\mdp_db_backup_scripts\dbrman_scripts\delobsolete.txt
run {
crosscheck backup;
delete noprompt obsolete;
delete noprompt expired backup;
}
exit
--备份归档日志 D:\mdp_db_backup_scripts\dbrman_scripts\arch.txt
sql 'alter system archive log current' ;
run {
allocate channel a1 type disk FORMAT 'D:\mdp_db_backup\mdp_db_rmanbak\arch\' ;
backup filesperset 10 format 'D:\mdp_db_backup\mdp_db_rmanbak\arch\arch_%T_%d_%t_%s_%p' archivelog all delete input;
release channel a1;
}
exit
--数据库0级备份 D:\mdp_db_backup_scripts\dbrman_scripts\level0.txt
sql 'PURGE DBA_RECYCLEBIN';
sql 'alter system archive log current' ;
run {
allocate channel a2 type disk ;
backup as compressed backupset incremental level 0 DATABASE filesperset 5 format 'D:\mdp_db_backup\mdp_db_rmanbak\dbfile\db_%T_%d_%t_%s_%p' ;
release channel a2;
}
exit
(3)计划任务的bat脚本
--删除多余和无效备份(每天22:00删除)
D:\mdp_db_backup_scripts\dbrman_scripts\mdpdbdel.bat
C:\oracle\MDP\11203\BIN\rman.exe target / nocatalog cmdfile 'D:\mdp_db_backup_scripts\dbrman_scripts\delobsolete.txt' log 'D:\mdp_db_backup\mdp_db_rmanbak\dbfile_log\mdpdbrmandel_%date:~0,4%-%date:~5,2%-%date:~8,2%.log'
----备份归档日志(每天的23:00备份)
D:\mdp_db_backup_scripts\dbrman_scripts\mdpdbarch.bat
C:\oracle\MDP\11203\BIN\rman.exe target / nocatalog cmdfile 'D:\mdp_db_backup_scripts\dbrman_scripts\arch.txt' log 'D:\mdp_db_backup\mdp_db_rmanbak\dbfile_log\mdpdbrmanarch_%date:~0,4%-%date:~5,2%-%date:~8,2%.log'
--数据库0级备份(每周三、六的23:50备份)
D:\mdp_db_backup_scripts\dbrman_scripts\mdpdblev0.bat
C:\oracle\MDP\11203\BIN\rman.exe target / nocatalog cmdfile 'D:\mdp_db_backup_scripts\dbrman_scripts\level0.txt' log 'D:\mdp_db_backup\mdp_db_rmanbak\dbfile_log\mdpdbrmanlevel0_%date:~0,4%-%date:~5,2%-%date:~8,2%.log'
之后配置rman的计划任务,可参照之前expdp的计划任务配置,这里不再做演示;
最后所有的计划任务配置如下: