我是靠谱客的博主 背后星星,最近开发中收集的这篇文章主要介绍通过 RMAN备份恢复搭建Oracle DG,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

平时都是通过RMAN DUPLICATE来搭建dg,今天遇到了问题,只能改换方法。

一、 奇怪的问题

执行RMAN DUPLICATE时发现数据文件传输十分之慢,在约250M/s的磁盘上传输速度居然只有10M/s左右。检查存储、网络、服务器均无异常。查看源库有remote DB file write等待,搜索发现MOS有相关文档 RMAN Hangs When Creating Standby DB As Duplicate From Active Primary (文档 ID 2512075.1) 。

其中给出的问题症状如下(我们符合前两项):

  • Executing RMAN active duplicate for standby.
  • RMAN hangs with wait event "remote DB file write" on target (primary) DB and "sql*net vector data to client" on auxiliary (standby) database.
  • ASM disks being used for both target database and auxiliary database

但是文档并没有给出问题原因,给出的解决方法是升级操作系统至最新版本,这个对我们来说无法接受,并且之前使用该操作系统也成功搭建过很多次,只能另寻解决方法。

另外NOTE:1676197.1 - RMAN Duplicate hangs when using DCD and TCPS给出了另一个可能导致hang的原因——使用了DCD(sqlnet.ora设置了expire_time),但我们也没用,不符合。

二、 通过RMAN备份恢复搭建DG

到 startup nomount pfile='/xxx/initxxx.ora' 这步及之前都与使用RMAN Duplicate没有区别,不再另外列出

1. 备份源库

# 执行全备,是否使用并行和压缩视情况而定
# 压缩备份语法
backup as compressed backupset database FORMAT '/data/bak/data_%T_%s';
RMAN>
run {
allocate channel t1 type disk;
allocate channel t2 type disk;
backup database FORMAT '/oradata/backup/data_%T_%s';
release channel t1;
release channel t2;
}
# 执行控制文件备份
RMAN> backup current controlfile for standby format '/oradata/backup/control.bak';

将备份文件传至目标库

2. 数据恢复

数据文件目录与源库相同时

# 恢复控制文件
RMAN> RESTORE STANDBY CONTROLFILE FROM '/oradata/backup/control.bak';
# 启动数据库到mount状态
RMAN> sql 'alter database mount';
# 恢复数据库
RMAN> catalog start with '/oradata/backup/';
RMAN> restore database;
RMAN> recover database;
# 恢复有报错,可以忽略
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 10/17/2017 09:33:30
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence xx
and starting SCN of xxxx

数据文件目录与源库不同时

# 恢复控制文件
RMAN> RESTORE STANDBY CONTROLFILE FROM '/oradata/backup/control.bak';
# 启动数据库到mount状态
RMAN> sql 'alter database mount';
# 恢复数据库
RMAN> catalog start with '/oradata/backup/';
RMAN> Set newname for database to '/xxx/datafile/%b';
RMAN> restore database;
RMAN> recover database;
RMAN> Switch datafile all;

3. 配置DG

创建备库standby日志文件,用于实时同步数据。如果有主库同步过来的需要drop掉用我们新建的,否则做不到实时同步。另外也建议把online redolog建上,否则主从切换后会有问题。

alter system set standby_file_management=manual;
--建n个online redolog
alter database add logfile size 300m;
--建n+1个standby log
alter database add standby logfile size 300M;
alter system set standby_file_management=auto;

应用日志,到追平后open数据库,启用实时日志应用

-- 应用日志
alter database recover managed standby database disconnect from session;
-- 查看alert日志,追平后打开数据库
alter database recover managed standby database cancel;
alter database open;
-- 实时应用日志
alter database recover managed standby database using current logfile disconnect from session parallel 4;

检查主从是否同步

select value from v$dataguard_stats where name='apply lag';
select value from v$dataguard_stats where name='transport lag';

参考

RMAN Hangs When Creating Standby DB As Duplicate From Active Primary (文档 ID 2512075.1)

NOTE:1676197.1 - RMAN Duplicate hangs when using DCD and TCPS

Oracle DG--Rman备份集搭建备库-阿里云开发者社区

最后

以上就是背后星星为你收集整理的通过 RMAN备份恢复搭建Oracle DG的全部内容,希望文章能够帮你解决通过 RMAN备份恢复搭建Oracle DG所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部