概述
平时都是通过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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复