Windows下Oracle11g增量备份与恢复

来源:互联网 发布:知乎非常了得 编辑:程序博客网 时间:2024/06/05 08:00

Windows下Oracle11g增量备份与恢复
作者:张春醒

1. 实现目标

备份数据库到指定硬盘,最坏的情况下,允许丢失一天的数据。

2. 备份计划与恢复策略

假定数据库的备份任务作如下安排:
星期一:完全备份(A)
星期二:增量备份(B)
星期三:增量备份(C)
星期四:增量备份(D)
星期五:累计备份(E)
星期六:增量备份(F)
星期日:增量备份(G)

假设在星期日,数据库遭到意外破坏,数据库管理员可按以下步骤来恢复数据库:
第一步:用命令CREATE DATABASE重新生成数据库结构
第二步:创建一个足够大的附加回段
第三步:完全增量导入A (恢复数据库必须要存在一个完全增量备份)
第四步:累计增量导入E
第五步:最近增量导入F

3. 把Oracle切换到归档模式

(1)查看归档模式

sqlplus / as sysdba   (cmd下输入此命令,不要省略/前后的空格!)SQL> archive log list

我自己操作的时候出现了:ORA-12560: TNS: 协议适配器错误
所以使用的是:

sqlplus sys/sys@orcl as sysdbaSQL> archive log list

(2)启用归档模式

sqlplus / as sysdbaSQL> shutdown immediate; (立即关闭数据库)SQL> startup mount (启动实例并加载数据库,但不打开)SQL> alter database archivelog; (更改数据库为归档模式)SQL> alter database open; (打开数据库)SQL> alter system archive log start; (启用自动归档)

(注意:一般修改归档模式后,需要做一次完全备份,因为归档前的日志
已经没用了。我们这儿暂时不做,等到配置完计划任务后,再做完全备份)

SQL> exit; 

4. 创建备份脚本

先手工创建D:\backup文件夹

(1)创建“完全”备份脚本
即备份整个数据库。
创建文件:d:\rmanbackup_full.txt(文件路径和名称都可以自拟)
内容:

run{backup incremental level 0 database format 'D:/backup/backup_%d_%T_%s';}

创建文件:d:\rmanbackup_full.bat(文件路径和名称都可以自拟)
内容:

rman target / nocatalog CMDFILE 'd:/rmanbackup_full.txt' LOG  'd:/rmanbackup_%DATE:~0,4%_%DATE:~5,2%_%DATE:~8,2%.log';

如果待会运行的时候还会出现:ORA-12560: TNS: 协议适配器错误,则将文件修改为:

rman target sys/sys@orcl nocatalog CMDFILE 'd:/rmanbackup_full.txt' LOG  'd:/rmanbackup_%DATE:~0,4%_%DATE:~5,2%_%DATE:~8,2%.log';

(2)创建“差异”备份脚本
备份上一次备份后改变的数据。
创建文件:d:\rmanbackup_incremental.txt (文件路径和名称都可以自拟)
内容:

run{backup incremental level 1 database format 'D:/backup/backup_%d_%T_%s';}

创建文件:d:\rmanbackup_incremental.bat (文件路径和名称都可以自拟)
内容:

rman target / nocatalog CMDFILE 'd:/rmanbackup_incremental.txt' LOG  'd:/rmanbackup_%DATE:~0,4%_%DATE:~5,2%_%DATE:~8,2%.log';

跟上面一样,如果出现那个错误,就将sys/sys@orcl加上
(3)创建“累计”备份脚本
累计型导出方式只是导出自上次“完全”导出之后数据库中变化了的信息。
创建文件:d:\rmanbackup_cumulative.txt (文件路径和名称都可以自拟)
内容:

run{backup incremental level 1 cumulative database format 'D:/backup/backup_%d_%T_%s';}

创建文件:d:\rmanbackup_cumulative.bat (文件路径和名称都可以自拟)
内容:

rman target / nocatalog CMDFILE 'd:/rmanbackup_cumulative.txt' LOG  'd:/rmanbackup_%DATE:~0,4%_%DATE:~5,2%_%DATE:~8,2%.log';

出现错误则同上

5. 手工启动一次完全备份

(1)手工执行rmanbackup_full.bat

D:\>rmanbackup_full.bat

这里写图片描述

(2)文件管理器中,查看生成的备份文件
这里写图片描述

(3)使用rman命令查看备份信息

rman target /   (cmd命令行下输入此命令)RMAN>list backup;我使用的依然是:rman target sys/sys@orclRMAN>list backup;

(4)若想删除,可使用delete backup指令

6. 创建备份计划任务

(1)计划任务的时间安排
我们创建7个计划任务,分别对应以下时间点。假定任务执行时间是每天晚上23:00.
星期一:完全备份(A)
星期二:增量备份(B)
星期三:增量备份(C)
星期四:增量备份(D)
星期五:累计备份(E)
星期六:增量备份(F)
星期日:增量备份(G)

(2)创建一个计划任务

①打开控制面板->管理工具->任务计划程序
这里写图片描述

②创建基本任务
这里写图片描述

③选择每周
这里写图片描述

④选择星期一23:00
这里写图片描述

⑤选择启动程序
这里写图片描述

⑥选择执行D:\rmanbackup_full.bat
这里写图片描述

⑦最终信息确认,正确,点击完成
这里写图片描述

⑧打开属性对话框
这里写图片描述

⑨选择“不管用户是否登陆都要运行”,勾选“不存储密码”,确定
这里写图片描述

(3)建议立即进行测试
为了测试上述建立的计划任务,需把计划任务的执行时间,改到当天当前时间后的2分钟左右。然后注销计算机,等待5分钟。
5分钟后,登陆计算机,查看刚才的计划任务执行是否成功,有没有生成备份的数据库文件。
测试后,请把计划任务的时间,复原。

(4)创建其他计划任务
请模仿以上步骤,继续创建其他6个计划任务。

7.如何恢复数据库

(1)尽力对整个数据库进行完全恢复
本操作,恢复到数据库崩溃前的那个点。若数据库没有错误,该命令执行后,没有任何效果。

rman target / (命令行下输入此命令,我用的是 rman target sys/sys@orcl)rman>shutdown immediate; (立即关闭数据库)rman>startup mount; (启动实例并加载数据库,但不打开)rman>restore database; rman>recover database; rman>alter database open;

(2)恢复到历史中的一个备份

rman target / (命令行下输入此命令,我用的是 rman target sys/sys@orcl)rman>shutdown immediate; (立即关闭数据库)rman>startup mount; (启动实例并加载数据库,但不打开)RMAN> run {set until time "to_date('2014-07-03 19:04:00','yyyy-mm-dd hh24:mi:ss')";restore database;recover database;alter database open resetlogs;}
1 0
原创粉丝点击