Data Guard搭建困境突围(一)(r10笔记第17天)

在Oracle 10g的中搭建Data Guard环境真是一个纠结,目前大体都是采用两种方式,一种是rman备份,一种是duplicate的方式,但是这两个地方不够让我满意,一来是rman备份数据量不小,需要先在本地生成备份,然后拷贝到备库去,这个搭建周期略长,另外一个就是推荐的方式duplicate,在10g中有些鸡肋的味道,本地备份,然后拷贝到备库,然后动用duplicate的方式,这样的方式还不如手工rman的方式同步来得顺心顺意,所以在10g中我是不怎么喜 欢duplicate方式。当然11g终于改进了一把,这种方式成了我搭建Data Guard的不二之选。 最近碰到一个比较纠结的问题就是在主备库空间资源不足的情况下,如何在10g版本中顺利搭建Data Guard环境。大体的情况如下:

主备库的文件分布略有一些差别,数据库数据量大概在800G左右,数据库版本为10gR2. 这让我很纠结,到底该怎么处理,一来是文件的路径映射,至少Oracle的convert参数还处理不了这么智能,如何这么平均的分配空间和数据。所以哪怕备库的空间总量够,我还是悬着心,这个需求至少通过rman的异机恢复还是有难度。那么试试duplicate,当然我们知道文件路径可以重新修改,所以主要的问题还是在于空间,10g的duplicate需要在主库端生成备份集,然后在备库开启duplicate选项而已。所以实现起来还是有难度。 Oracle如何通过rman的方式实现远程备份,这是个难题,如果是在11g可能这个问题就能够大大化和,在10g上如何突围呢。 假设数据库主库为primary,备库为standby 则我在备库尝试使用下面的方式,我们在/home/oracle/下创建一个临时目录tmp,看看到底能够在备库环境生成。 rman target sys/oracle@primary COPY DATAFILE 1 to '/home/oracle/tmp/system01.dbf'; 运行时提示文件无法创建,因为在服务器主库环境没有这个目录。所以初战失败。然后尝试使用duplicate的方式。 rman target sys/oracle@primaryauxiliary sys/oracle@standby nocatalog 这种方式是我们一直使用的方式,当然这种方式没有给我带来任何惊喜,依旧是在当前环境不大适合。 在备库端我们可以这么试试。 rman target sys/oracle@standby auxiliary sys/oracle@primary nocatalog COPY DATAFILE 1 to '/home/oracle/tmp/system01.dbf'; 这种方式就可以顺利在备库端生成系统表空间的数据文件了。 所以我们的改进方式就是参考这个主要的 解决思路。 当然我们可以在主库生成相应的命令,直接批量执行即可。假设我们存在下面的数据文件。 select 'copy datafile '||file_id ||' to '||chr(39)||file_name ||chr(39)||';'from dba_data_files; copy datafile 4 to '/U01/app/oracle/oradata/newtest2/users01.dbf'; copy datafile 3 to '/U01/app/oracle/oradata/newtest2/undotbs01.dbf'; copy datafile 2 to '/U01/app/oracle/oradata/newtest2/sysaux01.dbf'; copy datafile 1 to '/U01/app/oracle/oradata/newtest2/system01.dbf'; copy datafile 5 to '/U01/app/oracle/oradata/newtest2/users2.dbf'; copy datafile 6 to '/U01/app/oracle/oradata/newtest2/fbarch01.dbf'; 以其中的两个数据文件为例,日志如下: RMAN> copy datafile 5 to '/home/oracle/tmp/users2.dbf'; Starting backup at 2016-09-09 22:46:30 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile copy input datafile file number=00005 name=/U01/app/oracle/oradata/newtest2/users2.dbf output file name=/home/oracle/tmp/users2.dbf tag=TAG20160909T224630 RECID=28 STAMP=922142791 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 Finished backup at 2016-09-09 22:46:32 RMAN> copy datafile 6 to '/home/oracle/tmp/fbarch01.dbf'; Starting backup at 2016-09-09 22:46:39 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile copy input datafile file number=00006 name=/U01/app/oracle/oradata/newtest2/fbarch01.dbf output file name=/home/oracle/tmp/fbarch01.dbf tag=TAG20160909T224639 RECID=29 STAMP=922142800 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 Finished backup at 2016-09-09 22:46:40 在主备库数据文件路径的情况下,就批量生成一个文件就可以立刻在备库使用。如果确认生成没有问题,直接拷贝覆盖原来备库文件,或者直接替换已有的备库数据文件即可。 DGMGRL> show configuration; Configuration - dg_newtest2 Protection Mode: MaxPerformance Databases: primaryxx- Primary database standbyxx- Physical standby database Fast-Start Failover: DISABLED Configuration Status SUCCESS 在10g中其实已经可以这样使用duplicate的方式来,但是Oracle却没有建议这么用,我觉得主要的考虑还是安全吧。 10g中这样用: Duplicate target database for standby nofilenamecheck ; 11g中这样用:Duplicate target database for standby from active database nofilenamecheck 可以看出主要的差别还是一个active的字样,我看到有很多人搭建Data Guard在主库端duplicate,这样在10g就很不规范而且有一定的风险。 尽管在11g做了这样的改进,但是还是很容易混淆关系,这也是我猜测的原因,当然手头的工作就是尝试在这种情况下尽快使用新方案搭建Data Guard环境。 当然对于很多老司机来说,这已经不是什么新方法了。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2016-09-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏A周立SpringCloud

使用Kubespray部署生产可用的Kubernetes集群(1.11.2)

Kubernetes的安装部署是难中之难,每个版本安装方式都略有区别。笔者一直想找一种 支持多平台 、 相对简单 、 适用于生产环境 的部署方案。经过一段时间的...

3432
来自专栏搜云库

HBase 深入浅出

HBase 深入浅出 HBase 在大数据生态圈中的位置 提到大数据的存储,大多数人首先联想到的是 Hadoop 和 Hadoop 中的 HDFS 模块。大家熟...

40610
来自专栏FreeBuf

NSA武器库之Eternalchampion(永恒冠军)复现

准备工作 攻击机1:带有漏洞利用工具集的XP,并且此次需要准备好WinHex, IP 172.26.97.35 攻击机2:Kali, IP 172.26.97....

2736
来自专栏weixuqin 的专栏

基于 Django 的手机管理系统

1884
来自专栏数据和云

安全预警:独立发布的Oracle严重 CVE-2018-3110 公告

在 2018年8月10日,Oracle 独立的发送了一封"安全警告"邮件给所有的 Oracle 用户,这封邮件的标题是:Oracle Security Aler...

1332
来自专栏Netkiller

网络设备配置管理与版本控制

网络设备配置管理与版本控制 摘要 2014-12-25 我的系列文档 Netkiller Architect 手札 Netkiller Developer ...

47611
来自专栏云计算

使用ThingsBoard查看物联网数据

ThingsBoard是一个开源平台,用于收集和可视化物联网设备的数据。可以将来自任意数量设备的数据发送到云服务器,在云服务器中可以通过可自定义的仪表板查看或共...

7.7K1
来自专栏Hadoop数据仓库

HAWQ技术解析(十五) —— 备份恢复

一、为什么还需要备份         HAWQ作为一个数据库管理系统,备份与恢复是其必备功能之一。HAWQ的用户数据存储在HDFS上,系统表存储在master节...

2479
来自专栏编程

年底总结一下Python WEB最好用的几个框架,让你有一个系统的了解

2017年就要过完了,我们来总结一下2017年最好用的17个Python Web框架 群内不定时分享干货,包括2017最新的python企业案例学习资料和零基础...

8338
来自专栏GopherCoder

Python:一周笔记

1664

扫码关注云+社区

领取腾讯云代金券