当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
Oracle11g物理备用数据库“实况克隆”详解(一)
发布时间:2010/10/26 9:53:28 来源:www.xue.net 编辑:城市总裁吧

    相比Oracle 8i和Oracle 9i,Oracle 11g在数据库备份方面做出了极大的改善,特别是作为Oracle最大可用性架构(MAA)一部分的真正应用集群(RAC)特性。Oracle 11g现在创建一个备用数据库变得更加简单了,因为恢复管理器(RMAN)支持直接从主数据库使用DUPLICATE DATABASE命令集通过网络克隆一个备用数据库,只要目标数据库是活动的即可。这意味着再也不用先生成,再传输,最后在备用数据库上通过复杂的手工方式还原和恢复主数据库的RMAN备份集了,相反,RMAN在主站点上自动生成一个转换脚本在内存中,然后在备用站点上使用这个脚本管理克隆操作,实际上不用DBA进行任何干预。下文将集中精力讲解备用数据库“实况克隆”特性。笔者的硬件基本情况是:双核AMD Athlon 64位CPU(Winchester 420),4GB内存,主机运行的是Windows xp系统,运行VMWare Server 1.0.8访问访问虚拟数据库服务器环境,每个虚拟机使用1个CPU,1200M内存,我选择Oracle Enterprise Linux (OEL) 4.5.1(Linux内核版本2.6.9-55.0.0.0.2.ELsmp)作为虚拟机客户端操作系统。

    每个VMWare虚拟机配置好后,在每个虚拟机的/etc/hosts文件中添加合适的条目,让主站点(training)和备用站点(11gStdby)之间建立起网络连接,然后在每个节点上都安装Oracle 11g数据库,最后,在主站点上创建好标准的11g R1种子数据库,包括标准的示例方案。这个数据库的ORACLE_SID是orcl,接下来就可以开始执行实况克隆操作了。

    克隆前准备工作:调整主数据库

    在克隆主数据库到对应的备用环境中之前,我需要对主数据库做一些调整,下面的步骤未做特别说明没有先后顺序,只要在发出DUPLICATE DATABASE命令前这些步骤都执行完了即可,在克隆操作过程中应该没有什么让人意外的东西出现。

    强制记录所有的交易

    大多数组织实施数据卫士配置的主要原因是保证所有交易都不丢失,但遗憾的是,默认情况下,Oracle数据库是运行在NOFORCE LOGGING模式下的,这意味着对对象的改变可能丢失,因为他们的存储属性被设为NOLOGGING,为了确保所有的改变都被记录下来,我将执行ALTER DATABASE FORCE LOGGING命令,这个命令需要在执行ALTER DATABASE ARCHIVELOG命令将数据库ARCHIVELOG模式前执行,这些命令如清单1所示。

    清单1 将主数据库切换到ARCHIVELOG模式

    –为归档日志文件设置一个合适的格式

    ALTER SYSTEM SET log_archive_format = ‘log_%s_%t_%r.arc’ SCOPE=SPFILE;

    –设置新的DB_UNIQUE_NAME参数,它不能动态修改

    ALTER SYSTEM SET db_unique_name = ‘orcl’ SCOPE=SPFILE;

    SHUTDOWN IMMEDIATE;

    STARTUP MOUNT;

    ALTER DATABASE FORCE LOGGING;

    ALTER DATABASE ARCHIVELOG;

    ALTER DATABASE OPEN;

    创建备用重做日志组

    自从Oracle 9i R2开始支持备用重做日志(standby redo log 即SRL)组开始,Oracle就建议配置它,SRL对于实时应用(Real Time Apply)特性是需要的,或DBA想要实现重做日志串联目的时也需要,除此之外,它任然是备用数据库配置选项。Oracle 11g另一个优点是如果SRL在主数据库上已经配置好,那么DUPLICATE DATABASE命令将会在备用数据库上自动创建它们。清单2显示了我在主数据库上创建SRL的命令,注意我也使用了多个重SRL文件保护整个SRL组,避免数据丢失,这一点和在线重做日志组类似。

    清单2 在主数据库上创建备用重做日志文件

    ALTER DATABASE

    ADD STANDBY LOGFILE

    ‘/u01/app/oracle/oradata/orcl/srl01.log’

    SIZE 50M

    REUSE;

    ALTER DATABASE

    ADD STANDBY LOGFILE

    ‘/u01/app/oracle/oradata/orcl/srl02.log’

    SIZE 50M

    REUSE;

    ALTER DATABASE

    ADD STANDBY LOGFILE

    ‘/u01/app/oracle/oradata/orcl/srl03.log’

    SIZE 50M

    REUSE;

    文件名转换

    一般情况下,备用数据库都是创建在与主数据库不同的主机上的,否则,在灾难中主备数据库都有可能受到危害,最佳做法是将对应的备用数据库的目录和文件名都弄成一样,但如果遇到挂载点不一样时,目录名需要修改,这个时候就需要使用DB_FILE_NAME_CONVERT和LOG_FILE_NAME_CONVERT初始化参数进行转换了。

    修改主站点初始化参数

    在主数据库上设置下列初始化参数确保DUPLICATE DATABASE命令能够一样配置备用数据库,我在清单3中详细列出了这些初始化参数设置:

    (1)DB_UNIQUE_NAME

    我通过这个参数为主数据库定义一个唯一的实例名,这个参数值使得区分“原始”主数据库和备用数据库变得更加简单,因为这是一个静态参数,我在清单1中已经将其设置为SCOPE=SPFILE,它将在主数据库实例启动时生效。

    (2)LOG_ARCHIVE_CONFIG

    这个参数控制主或备用数据库是否应该接受和/或发送来自远程源的归档重做日志,它允许我们包含所有主备数据库,因为它在配置中列出了所有数据库的DB_UNIQUE_NAME值,我将其设置为目前我的数据卫士数据库orcl和stdby。

    (3)STANDBY_FILE_MANAGEMENT

    我将这个参数设置问为auto了,这样主数据库上发生什么操作,备用数据库上就会跟着发生什么操作,如主数据库上创建一个文件,备用数据库上也将创建一个相同的文件,删除主数据库上一个已有文件,备用数据库上也做对应的删除。如新增一个在线重做日志文件组或删除一个表空间。

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved