RMAN那些事

来源:互联网 发布:js的this指向 编辑:程序博客网 时间:2024/06/05 02:12

现在基本备份和恢复都是通过RMAN来实现的,网上的各种资料和脚本也都非常详尽,在此只做一些小笔记,提醒自己一些应该注意的点。

恢复目录(catalog)的备份信息是放在恢复目录数据库里的,非恢复目录的备份信息是存放在控制文件中。

可通过list backup summary来查看总体的备份情况;通过show all;来查看RMAN的设置情况。

先说说expired和obsolete:

执行crosscheck backup时,crosscheck命令检查备份是否存在于备份介质上,如果不存在,则状态由avaliable改为expired。

如果删掉磁盘上的备份,再crosscheck一下,再list backup,就会发现显示出来的备份集都会变成expired,因为在磁盘上查找不到相关的备份了。

RMAN> delete noprompt expired backupset; (删除掉冗除的备份信息,noprompt是指无需确认直接删除

crosscheck还常使用于:在手工删除归档日志后,使用crosscheck进行检查,再删除expired状态的归档信息。

obsolete状态,是针对MAN备份保留策略来说的,超过了这个保留策略的备份,会被标记为obsolete,但其状态依旧为avaliable

我们可以使用report obsolete来查看已废弃的备份。

RMAN> configure retention policy to recovery window of 1 days;(将备份保留策略设置为1天)

RMAN> configure retention policy to redundancy 1;(保留最近的一份完整备份)

设置了保留策略后,超过保留期限的就会被标志为obsolete

RMAN> delete noprompt obsolete;(删除过期的备份集)

具体备体计划:

编写备份脚本,保存为.rman格式,例如full_bak.rman:

crosscheck backup;
delete noprompt expired backup; ——删除不存在的备份信息
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
backup database tag 'full_orcl_data' filesperset 10 format 'f:\backup\%d_db_%s_%T';    

——filesperset:files per set 每个备份集包含的文件数
release channel c1;
release channel c2;
sql 'alter system archive log current';   ——将当前日志归档
}
backup format 'f:\backup\%d_arch_%s_%T' archivelog all ;     ——备份归档日志
backup format 'f:\backup\%d_cont_%s_%T' current controlfile; ——备份控制文件
delete noprompt backup completed before 'sysdate-7'; ——删除过期的备份

exit;

然后再编写执行rman脚本的bat文件:

set oracle_sid=oracl
RMAN target system/oracle 

CMDFILE=D:\full_bak.rman  MSGLOG=D:\bak%Date:~0,4%%Date:~5,2%%Date:~8,2%.LOG (任务计划日志)

windows可以在任务计划里调用该脚本,设置执行的频率,例如每天0点备份或每周的星期天晚上备份。

linux与windows不同的是,将RMAN脚本嵌入到shell脚本,然后再通过crontab来实现中小型数据库数据库备份。

相关的内容可参考http://blog.csdn.net/leshami/article/details/6454509

0 0
原创粉丝点击