我是靠谱客的博主 背后星星,这篇文章主要介绍通过 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. 备份源库

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
# 执行全备,是否使用并行和压缩视情况而定 # 压缩备份语法 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. 数据恢复

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 恢复控制文件 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

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

复制代码
1
2
3
4
5
6
7
8
9
10
# 恢复控制文件 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建上,否则主从切换后会有问题。

复制代码
1
2
3
4
5
6
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数据库,启用实时日志应用

复制代码
1
2
3
4
5
6
7
-- 应用日志 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;

检查主从是否同步

复制代码
1
2
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的全部内容,更多相关通过内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部