Data Guard搭建困境突围(一)

    在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环境。
当然对于很多老司机来说,这已经不是什么新方法了。

时间: 2024-07-30 05:39:53

Data Guard搭建困境突围(一)的相关文章

Oracle 12c Data Guard搭建(一)

    对于使用12c的PDB,如果想尽快熟悉,掌握,那就是和业务挂钩,让它跑在业务上.当然是在能够基本驾驭它的前提下,要不就真成了甩手掌柜.11g可以玩得很好,12c里面也差不到哪里去.     摆在我面前的一个选择就是字符集,尽管有大量的PDB需要整合进来,但是我在分析了几套需要整合的数据库之后,发现字符集还是一个很重要的考量.比如几个已有的旧版本的数据库字符集为 UTF-8 US7ASCII   ZHS16GBK  ZHS16GBK,折中一些,根据实际情况还是选用ZHS16GBK,如果是个

搜狐畅游高级DBA:Data Guard运维中的实战经验和技巧

本次分享由以下几个部分组成: Data Guard的灾备介绍 备库的设计方案考虑 备库敏感的几个数据文件类操作 对Switchover和Failover的建议 SQL审核之Snapshot Standby Data Guard搭建/重建的小技巧   写在前面 之前有一个朋友很有深意的问我Data Guard和RAC哪个更重要,前提是在高可用和容灾两者之间来选择,只能选其一,我是毫不犹豫选择Data Guard,毕竟这是数据安全的基本防线,我想Data Guard的命名(中文翻译为数据卫士)也是这

从摆脱Data Guard手工搭建及维护的烦恼说起

讲师介绍  杨建荣 搜狐畅游高级DBA   DBAplus社群联合发起人.现就职于搜狐畅游,Oracle ACE-A.YEP成员,超7年数据库开发和运维经验,擅长电信数据业务.数据库迁移和性能调优. 持Oracle 10G OCP,OCM,MySQL OCP认证,<Oracle DBA工作笔记>作者.   本次分享将分为以下几部分: 半自动化搭建Data Guard 用不用DG Broker 几个实用场景演练 与时俱进:Oracle 12c Data Guard改进 诊断案例:备库批量查询失败

半自动化搭建Data Guard的想法和实践(一)

    一直以来搭建Data Guard是一件看起来还蛮有含量的工作,因为这其中涉及的工作比较琐碎,比较细,况且手工搭建起来都会碰到各种各样的问题,如果中途碰到一点儿小问题,那可能需要花点时间来排查,如果想要脚本自动化,那简直寸步难行.所以搭建Data Guard一方面会需要很多的提前准备和配置,另一方面这个工作自动化的驱动力不够,毕竟环境不会像MySQL业务一样动辄几十成百上千的规模,所以由此而来,好像搭建一个套环境的成本也值了,如果尝试自动化,半自动化,那花费的时间估计够搭建10套环境了.所

半自动化搭建Data Guard的想法和实践(四)

应有些网友的要求,今天还是硬着头皮把半自动化的方案给发出来了.内部测试了一下,因为我是开发者,使用者,所以都玩得转,大体的测试,从安装数据库软件到搭建Data Guard,在duplicate同步数据前,大概用了近15分钟时间.明天会再次测试一下,争取把脚本分享出来,当然脚本里的小问题很多.     我想写点思路,发现还是PPT的效果好些,临时写了几页,直接上PPT得了. 以下的文字大部分来源于DBAplus的一篇文章<Amazon全栈工程师:从淘汰Oracle数据库的事说起>,我直接拿过来了

半自动化搭建Data Guard的想法和实践(二)

关于半自动化搭建Data Guard,自己花了一些时间,总算是把这件事情继续推进了一下,还是再啰嗦一句,为什么不自动化,因为安全.主库就是主库,任何变更都要手工检查审核,自动化的工作在备库和中控端来完成.我希望自己的脚本能够只知道主库的IP,不用一次又一次连过去配置和检查,当然要完成自动化还是半自动化,有些网友也提醒的极是,那就是规范和标准. 预先条件: 1.目前的设计是基于11.2.0.4的版本,当然这个很容易定制,在此是作为一个基本的标准,作为环境的初始化和Data Guard对的搭建的基线

手工搭建Data Guard

Data Guard的搭建可以使用GC图形化安装,优缺点很明显,优点就是图形化操作,符合国人的习惯(据secooler介绍外国程序员能用图形化做的事就一定用图形做,因为boss看得懂,和国人正相反...),缺点就是如同Windows一样,宛如黑盒,换句话说,要时刻祈祷不要出问题,否则有时很难知道他为什么挂了... Data Guard还可以使用命令行操作,正如各位所知,图形化的任何操作背后,其实都是使用的命令.OCM第七场景考试中,我也是纠结了许久,临开始前才决定使用手工方式创建DG,怕的就是图

Oracle 11g Data Guard环境中的归档管理

11g里面,随着ASM.RAC.Data Guard(包括Active Data Guard)的成熟,使用RAC+ASM+Data Guard越来越成为一种可靠的.维护简单.稳定的高可用性和容灾保护方案.这篇文章谈谈如何管理Oracle 11g Data Guard环境中的归档日志. 归档日志是重要的,不然就不必提到这篇文章,备份恢复需要它,而Data Guard也需要它.在早期版本的Data Guard环境中,常常面临着归档日志管理问题.在Data Guard环境里面,对归档日志管理需要达到以

DG8——有关Oracle Data Guard Failover 的说明

原文转自:http://blog.csdn.net/tianlesoftware/article/details/6256542 在之前的两篇文章里都对oracle Data Guard的Failover 进行了说明,但是没有个系统的说明,所以在这篇把DG的Failover 做个系统的说明.          物理Data Guard 下Failover 时Redo 的处理问题        http://blog.csdn.net/tianlesoftware/archive/2010/11/