Window环境下Oracle 11g R2做增量备份和全量备份

安装环境: Window Server 2008 R2 64bit
Oracle版本: Oracle 11g R2

实现目标

每周全量备份一次数据库,每天增量备份,最坏情况是丢失一天的数据.

备份计划

  • 星期一全量备份
  • 星期二增量备份
  • 星期三增量备份
  • 星期四增量备份
  • 星期五累计备份
  • 星期六增量备份
  • 星期日增量备份

假设在星期日,数据库遭到意外破坏,数据库管理员可按以下步骤来恢复数据库:

  1. 用命令CREATE DATABASE重新生成数据库结构
  2. 创建一个足够大的附加回段
  3. 完全增量导入全量备份 (恢复数据库必须要存在一个完全增量备份)
  4. 累计增量导入(周五)
  5. 最近增量导入(周六)

Oracle设置为归档模式

  1. 以dba身份登录数据库
sqlplus / as sysdba

或者

sqlplus /nolog
conn /as sysdba
  1. 检查oracle是否处于归档模式
archive log list;
  1. 如果没有,执行下面步骤,将数据库转换为归档模式
--若报错已经打开,可以先执行shutdown immediate命令再执行)
startup mount; 
alter database archivelog;
alter database open;

成功更改后数据库已经处于归档模式.


Window环境下Oracle 11g R2做增量备份和全量备份_第1张图片
record.jpg

创建备份脚本

全量备份
备份整个数据库,是后面的基础
在D盘下创建backup文件夹(路径跟文件名可以自己随意)

  1. 创建文件 d:\backup\script\rman_backup_full.txt (文件跟路径可以自拟)
run{
backup incremental level 0 database format 'D:/backup/backup_%d_%T_%s';
}
  1. 创建文件 d:\backup\script\rman_backup_full.bat (文件跟路径可以自拟)
rman target / nocatalog CMDFILE 'd:/backup/script/rman_backup_full.txt' LOG 'd:/backup/rmanbackup_%DATE:~0,4%_%DATE:~5,2%_%DATE:~8,2%.log';

差异备份
备份上一次备份后改变的数据

  1. 创建文件 d:\backup\script\rman_backup_incremental.txt (文件跟路径可以自拟)
run{
backup incremental level 1 database format 'D:/backup/backup_%d_%T_%s';
}
  1. 创建文件 d:\backup\script\rman_backup_incremental.bat (文件跟路径可以自拟)
rman target / nocatalog CMDFILE 'd:/backup/script/rman_backup_incremental.txt' LOG 'd:/backup/rmanbackup_%DATE:~0,4%_%DATE:~5,2%_%DATE:~8,2%.log';

累计备份
备份上一次**完全备份后改变的数据

  1. 创建文件 d:\backup\script\rman_backup_cumulative.txt (文件跟路径可以自拟)
run{
backup incremental level 1 cumulative database format 'D:/backup/backup_%d_%T_%s';
}
  1. 创建文件 d:\backup\script\rman_backup_cumulative.bat (文件跟路径可以自拟)
rman target / nocatalog CMDFILE 'd:/backup/script/rman_backup_cumulative.txt' LOG 'd:/backup/rmanbackup_%DATE:~0,4%_%DATE:~5,2%_%DATE:~8,2%.log';

在控制面板->管理工具->任务计划程序 中创建基本任务将这3个bat文件根据备份计划设置每周执行即可.

PS:设置计划之前,请先执行一次全量备份.

删除前30天的备份文件:

@echo off
::演示:删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件。
::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。
::本例需要Win2003/Vista/Win7系统自带的forfiles命令的支持

rem 指定待删除文件的存放路径
set SrcDir=D:\backup
rem 指定天数
set DaysAgo=30

forfiles /p %SrcDir% /s /m *.* /d -%DaysAgo% /c "cmd /c echo del /f /q /a @path"
pause

你可能感兴趣的:(Window环境下Oracle 11g R2做增量备份和全量备份)