通过 RMAN备份恢复搭建Oracle DG

22 篇文章 3 订阅

平时都是通过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备份集搭建备库-阿里云开发者社区

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hehuyi_In

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值