HXXXES 高可用双机RMAN异地备份 Notes
2024-09-02 04:08:19
一、总览
大致上的逻辑如上图,简化细节来归纳,便是 用一个bat脚本来驱动整个备份过程。
二、一些准备工作
1、为备份所需的脚本,以及最终备份生成的文件创建目录
开始=》运行=》 cmd
mkdir "D:\dba_files\hemes_db_bak\HEMESDB1\full_daily"
mkdir "D:\dba_files\hemes_db_bak\HEMESDB1\full_daily\log"
mkdir "D:\dba_files\hemes_db_bak\HEMESDB1\full_daily\bak_files"
mkdir "D:\dba_files\hemes_db_bak\HEMESDB1\full_daily\control_files_bak"
pushd "D:\dba_files\hemes_db_bak\HEMESDB1\full_daily"
write ""> HEMESDB1_BACKUP_FULL_DAILY_by_frk.bat
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、确认归档模式
检查是否 开启归档
SYS@(10.2)> archive log list
数据库日志模式非存档模式
自动存档禁用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列734
当前日志序列736
没有开启归档,先shutdown
连接到:
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;即可
修改如下:
- ##########################
- log_archive_format='HXXDB1_ARC%s%t%r.log'
log_archive_dest_1='LOCATION=F:\hXXdb1_archive_log'
注意,是用的log_archive_dest_1参数,而不是log_archive_dest,后者用于向后兼容而使用,9i之后的版本不推荐使用此参数。
修改完毕后,
SQL> startup mount;
ORACLE 例程已经启动。
修改数据库位模式
SQL> alter database archivelog;
数据库已更改。
SQL> alter database open;
数据库已更改。
至此,准备工作完毕
三、配置备份脚本
│ HXXXSDB1_BACKUP_FULL_DAILY_by_frk.bat
│ HXXXSDB1_BACKUP_FULL_DAILY_by_frk.rman
│
├─bak_files
│
├─control_files_bak
│
└─log
还记得我们前面的工作路径吗? 我们现在要先完成rman脚本。
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.
最新文章
- MySQL学习笔记十二:数据备份与恢复
- 用POI读取具有任意合并单元的excel数据
- .Net中使用aliases让相同命名空间的dll引用共存
- .net架构设计读书笔记--第一章 基础
- lwip:网络数据包读取和解析过程
- C++ 宽字符(wchar_t)与窄字符(char)的转换
- 怎么制作U盘系统/PE启动盘
- Arduino 各种模块篇 蓝牙模块 手机蓝牙控制Arduino LED灯
- struts配置文件和国际化
- IIS HTTP 错误 500.19 - Internal Server Error HTTP 错误 401.3 - Unauthorized 解决办法
- Java探秘之神秘的字符串String(二)
- 【ARC101F】Robots and Exits 树状数组
- Maven setting配置镜像仓库
- React.js 入门与实战之开发适配PC端及移动端新闻头条平台课程上线了
- python 之禅 import this
- VIM各种快捷应用
- Angular1组件通讯方式总结
- node_module删除
- 20深入理解C指针之---程序的栈和堆
- [bug]Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding