ORACLE RMAN 备份策略及设置(Windows篇)

备份策略制定

数据量&需求备份策略恢复所需文件
数据量100G 一下一天做一次level 0的备份(全备)恢复的时候,会使用最新的那一 份备份和归档进行恢复
数据量100G -500G 周日做一次level 0的备份,其它工作日做level 1的增量备份恢复的时候,会使用周日的那一次level 0的做恢复,再加上工作日的 level 1的增量以及归档恢复到最新状态

数据量500G -1T

对恢复时间要求高

周日做一次level 0的备份,其它工作日做level 1的增量备份恢复的时候,会使用周日的那一次 level 0的做恢复,再加上工作日的 level 1的增量以及归档恢复到最新状态

数据量500G以上

对恢复时间无要求

每月初的周日做一次 level 0的备份,其它周日做level 1的增量备份,其它工作日做level 2 的增量备份。

例:2021- 10-01 做 level 0 的备份,7、14、21、28 号做 level 2的 incremental level 1 的备份,其它日做 incremental level 2的备份

假如 10 月 29 号发生数据库损 坏,可以使用月初周末的 1 号那 天的 level0 的做恢复,然后依次 使用 7、14、21、28 号做 level2 的 incremental level 1 的备份恢 复,再使用 29 号的 incremental level 2 备份恢复,最 后使用归档恢复到最新状态

创建备份目录

在 D 盘中新建 orcl 文件夹以及子文件夹 archive(归档)control(控制)log(日志),如下:

D

-orcl

--archive

--control

--log

查看归档并启用

要用到RMAN备份,必须先开启存档模式

sqlplus / as sysdba (cmd 下输入此命令)

SQL> archive log list; (查看是否开启存档模式)

如果未开启,执行下面语句开启

SQL> shutdown immediate; (立即关闭数据库)

SQL> startup mount; (启动实例并加载数据库,但不打开)

SQL> alter database archivelog; (更改数据库为归档模式)

SQL> alter database open; (打开数据库)

SQL> alter system archive log start; (启用自动归档)

SQL> alter system set log_archive_dest_1='location=D:\orcl\archive'; (修改归档路径)

注:修改归档模式后,需要做一次完全备份,等配置完计划任务后,立即执行完全备份

 设置RMAN参数

rman target / (cmd 下输入此命令)
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; 
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'D:\orcl\control\%F';
RMAN> show all;

创建备份脚本

全备

rmanbackup_full.txt

connect target /
run{
    backup incremental level 0 database format 'D:\orcl\rmanbackup\backup_%d_%T_%s'; 
    backup archivelog all format 'D:\orcl\rmanbackup\arch_%d_%T_%s' delete all input;         
    delete noprompt obsolete device type disk; 
    alter system archive log current; 
    crosscheck backup; 
    delete noprompt expired backup; 
}

 第一行是连接数据库 RMAN。

第二行开始是 RMAN 的 run 块,里面写相关的命令,注意 delete 命令都需要添加 noprompt 来实现无提示的自动运行效果。

run 块中的第一行就是 0 级备份的语句。

run 块中的第二行就是备份归档日志并删除的语句。

run 块中的第三行是删除被标记为过期的备份文件,就是删除 7 天之前最后一个全备和那 次全备之前的所有 1 级 2 级备份和归档日志。这里一定要注意,是 7 天之前的最后一个全 备,可能是 7天前的某个全备。

run 块中的第四行是重做归档日志文件,让备份完毕后新的归档日志以当前的全备为起始, 防止产生归档日志断续的问题,也可以在恢复的时候自动寻找最近的一次全备然后开始逐条 sql 恢复。

run 块中第五行是检查备份文件物理上有没有缺失的状况,可以不执行这条语句。这条语句 的主要作用是如果你从磁盘上物理删除了之前的某次备份,可以通过这个检查出来

run 块中第六行是删除上面那一条发现的,物理磁盘已经丢失但控制文件还记录的备份文件, 删除物理已经丢失的文件可以在回滚数据库的时候减少无意义的报错。

批处理文件:rmanbackup_full.bat

set oracle_sid=orcl
set nls_lang=simplified chinese_china.zhs16gbk
rman cmdfile= D:\orcl\rmanbackup\rmanbackup_full.txt >>
D:\orcl\rmanbackup_%DATE:~0,4%_%DATE:~5,2%_%DATE:~8,2%.log

增量

rmanbackup_incremental.txt

connect target /
run{
    alter system archive log current;
    backup incremental level 1 database format 'D:\orcl\backup_%d_%T_%s';
}

批处理文件:rmanbackup_incremental.bat

set oracle_sid=orcl
set nls_lang=simplified chinese_china.zhs16gbk
rman cmdfile=D:\orcl\rmanbackup_incremental.txt >>
D:\orcl\log\rmanbackup_%DATE:~0,4%_%DATE:~5,2%_%DATE:~8,2%.log

累计

rmanbackup_cumulative.txt

connect target /
run{
    alter system archive log current;
    backup incremental level 1 cumulative database format 'C:\orcl\backup_%d_%T_%s';
}

批处理文件:rmanbackup_cumulative.bat

set oracle_sid=orcl
set nls_lang=simplified chinese_china.zhs16gbk
rman cmdfile=D:\orcl\rmanbackup_cumulative.txt >>
D:\orcl\log\rmanbackup_%DATE:~0,4%_%DATE:~5,2%_%DATE:~8,2%.log

创建备份任务 

计算安排

我们创建 3 个计划任务,分别对应以下时间点,任务执行时间是每天晚上 23:00

星期日:完全备份

星期一:增量备份

星期二:增量备份

星期三:累计备份

星期四:增量备份

星期五:增量备份

星期六:增量备份

计划任务

控制面板>管理工具>任务计划程序

创建任务

选择每周

选择星期日

启动程序

 添加全备的脚本

 完成

 打开属性对话框

选择“不管用户是否登陆都要运行”,勾选“不存储密码”,确定

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值