一、总览

大致上的逻辑如上图,简化细节来归纳,便是 用一个bat脚本来驱动整个备份过程。
 
二、一些准备工作

1、为备份所需的脚本,以及最终备份生成的文件创建目录

   开始=》运行=》 cmd
  1. mkdir "D:\dba_files\hemes_db_bak\HEMESDB1\full_daily"
  2. mkdir "D:\dba_files\hemes_db_bak\HEMESDB1\full_daily\log"
  3. mkdir "D:\dba_files\hemes_db_bak\HEMESDB1\full_daily\bak_files"
  4. mkdir "D:\dba_files\hemes_db_bak\HEMESDB1\full_daily\control_files_bak"
  5. pushd "D:\dba_files\hemes_db_bak\HEMESDB1\full_daily"
  6. write ""> HEMESDB1_BACKUP_FULL_DAILY_by_frk.bat
  7. write ""> HEMESDB1_BACKUP_FULL_DAILY_by_frk.rman
 
 
OK,到目前为止,D:\dba_files\hemes_db_bak\HEMESDB1\full_daily的目录结构便大致如下 
 
│  HEMESDB1_BACKUP_FULL_DAILY_by_frk.bat
│  HEMESDB1_BACKUP_FULL_DAILY_by_frk.rman
├─bak_files
│      
├─control_files_bak
│     
└─log
 
 

2、Control file 多路径存放(非必须)

 
如上图,登录sqlplus ,用alter system set control_files='X:,X:' 来修改,英文逗号分隔,
上图设置为5个control file存放路径,分别为D盘,F盘,D盘为location disk,F盘为存储

设置时需要停机,再进行操作系统复制文件,确保配置参数的路径都拥有此文件。

3、设置操作系统日期格式

否则rman会报错 "RMAN-00557: 无法打开 MSGLOG"

4、确认归档模式

检查是否 开启归档
 
  1. SYS@(10.2)> archive log list
  2. 数据库日志模式非存档模式
  3. 自动存档禁用
  4. 存档终点 USE_DB_RECOVERY_FILE_DEST
  5. 最早的联机日志序列734
  6. 当前日志序列736
 
没有开启归档,先shutdown 
  1. 连接到:
    OracleDatabase10gEnterpriseEditionRelease10.2.0.5.0-64bitProduction
    With the Partitioning, OLAP,DataMiningandRealApplicationTesting options SYS@(10.2)> alter system checkpoint;
    系统已更改。
    SYS@(10.2)> alter system flush shared_pool;
    系统已更改。
    SYS@(10.2)> alter system flush buffer_cache;
    系统已更改。
    SYS@(10.2)> shutdown immediate;
也可以在
Oracle Fail Safe Manager里手动操作Take offline 
 

 
 
找出parameter file
 
『注:』这里是用的Win NT的集群,所以是共享存储上的parameter文件,确保在实例发生故障的时候仍然用同样的一份parameter file在备机启动,如果是单机实例则可以直接用 alter system set X=XXX scope=spfile;即可 
 

 
 
修改如下:
 

 
  1. ##########################
  2. log_archive_format='HXXDB1_ARC%s%t%r.log'
  3. log_archive_dest_1='LOCATION=F:\hXXdb1_archive_log'
​注意,是用的log_archive_dest_1参数,而不是log_archive_dest,后者用于向后兼容而使用,9i之后的版本不推荐使用此参数。
 
修改完毕后,
  1. SQL> startup mount;
  2. ORACLE 例程已经启动。
  3. 修改数据库位模式
  4. SQL> alter database archivelog;
  5. 数据库已更改。
  6. SQL> alter database open;
  7. 数据库已更改。
至此,准备工作完毕
 
三、配置备份脚本
  1. │ HXXXSDB1_BACKUP_FULL_DAILY_by_frk.bat
  2. │ HXXXSDB1_BACKUP_FULL_DAILY_by_frk.rman
  3. ├─bak_files
  4. ├─control_files_bak
  5. └─log
还记得我们前面的工作路径吗? 我们现在要先完成rman脚本。
 
  1. RUN {
    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;#备份集有效时间为7天。
    CONFIGURE CONTROLFILE AUTOBACKUP ON;#自动备份控制文件。
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'D:\dba_files\hXXXs_db_bak\HXXXSDB1\full_daily\bak_files\%d%F_ctl.bak';
    ##控制文件的备份路径以及格式。
    ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT 'D:\dba_files\hXXXs_db_bak\HXXXSDB1\full_daily\bak_files\%d%T%U';
    BACKUP AS COMPRESSED BACKUPSET DATABASE SKIP INACCESSIBLE format='D:\dba_files\hXXXs_db_bak\HXXXSDB1\full_daily\bak_files\%d%T%U_data.bak' FILESPERSET 20
    ##开启CH1通道,压缩的方式备份整个DB,并且跳过不可读的文件
    PLUS ARCHIVELOG FILESPERSET 20##同时备份归档日志
    DELETE ALL INPUT;##备份完归档日志后,将其清空
    RELEASE CHANNEL CH1;##释放CH1通道
    }
    CROSSCHECK BACKUPSET;##交叉校验备份集
    DELETE NOPROMPT OBSOLETE;##删除过期的备份集 接着完成bat脚本。 rem 整体的思路为
    rem 1、oracle的进程是否存在,因为是windows高可用,双机状态
    rem 2、rman脚本全备份至本地磁盘
    rem 3、RoBocopy拷贝全备份至存储,以达成两地备份
    rem 4、删除15天之前的备份文件
    rem
    rem 注释RoBoCopy D:\dba_files\hXXXs_db_bak\HXXXDB1\full_daily\bak_files\ F:\hXXXsdb1_backup /E /MT:16/MAXAGE:1
    rem 把D盘的对应内容拷贝至F盘,/E 包含子文件夹/MT 线程数量,/MAXAGE 拷贝的文件为最近1天
    rem
    rem 最后forfiles命令清除15天之前的备份文件,具体参数可以查看forfiles /?帮助 @echo off
    set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
    set oracle_sid=hemesdb1
    rem 设置oracle_sid,以及nls_lang tasklist|find /i "oracle.exe"||exit
    rem 判定本机器是否有oracle.exe进程,如果没有则直接退出脚本,不执行后续的备份操作,这样本脚本即可通用于双机实例的环境。 rman target sys/sys的密码@hemesdb1 msglog D:\dba_files\hXXXs_db_bak\HXXXSDB1\full_daily\log\%date:~0,10%.log cmdfile=D:\dba_files\hXXXs_db_bak\HXXXSDB1\full_daily\HXXXSDB1_BACKUP_FULL_DAILY_by_frk.rman
    rem 执行rman备份,msglog为log路径,cmdfile则为rman脚本路径 RoBoCopy D:\dba_files\hXXXs_db_bak\HXXXSDB1\full_daily\bak_files\ F:\hXXXsdb1_backup\ /E /MT:50/MAXAGE:1
    rem RoBocopy拷贝全备份至存储,以达成两地备份,local disk一份,存储一份 forfiles /P F:\hXXXsdb1_backup /D -15/C "cmd /c del @file"
    forfiles /P D:\dba_files\hXXXs_db_bak\HXXXSDB1\full_daily\bak_files /D -15/C "cmd /c del @file"
    rem 最后forfiles命令清除15天之前的备份文件,具体参数可以查看forfiles /?帮助 exit
 
设置任务计划,定时每日执行 HEMESDB1_BACKUP_FULL_DAILY_by_frk.bat
 
同样的脚本,同样的配置,一起放到备机上。
 

 
 
 
至此,WIN NT上的高可用双机多实例rman备份完成。
 
很高兴你能看到这里,欢迎交流更好的方案, Thanks & Regards.

最新文章

  1. MySQL学习笔记十二:数据备份与恢复
  2. 用POI读取具有任意合并单元的excel数据
  3. .Net中使用aliases让相同命名空间的dll引用共存
  4. .net架构设计读书笔记--第一章 基础
  5. lwip:网络数据包读取和解析过程
  6. C++ 宽字符(wchar_t)与窄字符(char)的转换
  7. 怎么制作U盘系统/PE启动盘
  8. Arduino 各种模块篇 蓝牙模块 手机蓝牙控制Arduino LED灯
  9. struts配置文件和国际化
  10. IIS HTTP 错误 500.19 - Internal Server Error HTTP 错误 401.3 - Unauthorized 解决办法
  11. Java探秘之神秘的字符串String(二)
  12. 【ARC101F】Robots and Exits 树状数组
  13. Maven setting配置镜像仓库
  14. React.js 入门与实战之开发适配PC端及移动端新闻头条平台课程上线了
  15. python 之禅 import this
  16. VIM各种快捷应用
  17. Angular1组件通讯方式总结
  18. node_module删除
  19. 20深入理解C指针之---程序的栈和堆
  20. [bug]Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding

热门文章

  1. 一套完整的VI包含哪些元素
  2. 学习javscript函数笔记(二)
  3. AWS and OpenStack
  4. Visual Studio 创建封装自己的代码段(C#)
  5. nginx location 配置阐述优先级别使用说明
  6. java并发编程 - Exexctor简介
  7. jqGrid 将行变成超连接时浏览器解析超连接错误
  8. 认识dojo
  9. [LeetCode]22. Generate Parentheses括号生成
  10. Protocol Buffers教程