设为首页 收藏本站
查看: 571|回复: 0

[经验分享] Oracle 11g DataGuard物理standby配置

[复制链接]

尚未签到

发表于 2015-12-19 15:09:15 | 显示全部楼层 |阅读模式
Oracle dataguard 简介
  Dataguard分为2:
   
    物理standby:  此类型分为redo应用、read-only模式、read-write模式,当处于redo应用
                的时候,不能进行相关的查询操作,当处于read-only,不能应用redo,
               是在oracle 11G版本之后,read-only下可以应用redo,当处于read-write
                            时,但暂停从primary接受redo数据.
   
   逻辑 standby:  此类型可以在read-write模式下,可以从primary接受redo数据,并且可以
                应用redo.
   
  关于2者的区别和特点,大家可以自己在网上进行搜索,我这里就不一一说了.
   
    
  2种类型的相关进程:
   
  物理standby相关进程
   
  _ Remote file server (RFS)
  负责从主数据库上接收归档文件
  _ Archiver (ARCn)
  将日志进行归档
  Managed recovery process (MRP)
  将归档文件应用到备用机上
   
  逻辑standby相关进程
   
  _ Remote file server (RFS)
  负责从主数据库上接收归档文件
  _ Archiver (ARCn)
  将日志进行归档
  Logical standby process (LSP)
  将归档文件应用到备用机上
实验环境:
     本次试验使用vmware server 1.6虚拟机,相关的IP规划如下:
   
     192.168.137.93                primary数据库
     192.168.137.94                standby数据库
   
     在2个服务器上执行如下操作:
     # vi /etc/hosts
   
   192.168.137.93                node1
     192.168.137.94                node2
软件环境
     数据库:  oracle  11G
Dataguard 配置:
  在primary服务器上执行如下操作
   
  SQL>>primary数据库设置为FORCE
                                          LOGGING模式
   
  SQL> create pfile from spfile;   //创建一个pfile,可以方便编辑,我这里把spfile放到另外一个路径,让oracle读取pfile.
   
  pfile文件添加如下内容:
   
  *.DB_UNIQUE_NAME=uqn_node1              //自定义一个unique_name名字
  *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(uqn_node1,uqn_node2)'  //此处为主备服务器的unique_name
  *.LOG_ARCHIVE_DEST_2='SERVICE=node2 ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=uqn_node2'
  *.LOG_ARCHIVE_DEST_STATE_1=ENABLE
  *.LOG_ARCHIVE_DEST_STATE_2=ENABLE
  *.LOG_ARCHIVE_MAX_PROCESSES=30
  *.FAL_SERVER=node2                        //这里为net service name
  *.FAL_CLIENT=node1
  *.STANDBY_FILE_MANAGEMENT=AUTO
   
  假如数据库处在非归档模式下执行下面的sql(此步骤因是否处于归档模式而定)
   
  SQL> SHUTDOWN IMMEDIATE;
  SQL> STARTUP MOUNT;
  SQL>>
  SQL>>
   
  为STANDBY数据创建控制文件
   
  SQL> SHUTDOWN IMMEDIATE;
  SQL> STARTUP MOUNT;
  SQL>>
  SQL>>
   
  复制primary服务器的文件(数据文件、密码文件、pfile文件、控制文件)到STANDBY服务器上
   
  # cd /home/oracle/dbs
  # cp initora10.ora orapwora10 /home/oradata/
  # cd /home/
  $ scp -r admin/ oradata/ oracle@node2:/home/oradata
   
  到STANDBY服务器上执行下面的操作
   
  $ cd /home/oradata/ora10
  $ rm -rf control0*
  $ mv ../wiliiwin.ctl control01.ctl
  $ cp control01.ctl control02.ctl
  $ cp control01.ctl control03.ctl
  $ cd /home/oracle/dbs
  $ mv /home/oradata/initora10.ora .
  $ mv /home/oradata/orapwora10 .
  $ vi initora10.ora                        //需要把里面的内容稍微修改下
   
    *.DB_UNIQUE_NAME=uqn_node2              //自定义一个unique_name名字
  *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(uqn_node1,uqn_node2)'  //此处为主备服务器的unique_name
  *.LOG_ARCHIVE_DEST_2='SERVICE=node1 ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=uqn_node1'
  *.LOG_ARCHIVE_DEST_STATE_1=ENABLE
  *.LOG_ARCHIVE_DEST_STATE_2=ENABLE
  *.LOG_ARCHIVE_MAX_PROCESSES=30
  *.FAL_SERVER=node1                        //这里为net server
  *.FAL_CLIENT=node2
  *.STANDBY_FILE_MANAGEMENT=AUTO
   
  $ lsnrctl start                          //在primary和STANDBY服务器上都
                                             执行
   
  在主服务器上启动数据库实例
  SQL> startup;
  $ sqlplus system/oracle@node1      //在primary和STANDBY服务器上都进行测
                                       试下看时候能正常连接
   
  在STANDBY服务器上启动数据库实例
   
  //创建4个stanby redo 大小最好与主服务器大小相同,并且多一个文件,也在Primary服务器上也做如下操作,方便之后的角色切换.
   
  SQL> startup mount;
  SQL>>
  SQL>>
  SQL>>
  SQL>>
  SQL>>
测试dataguard数据是否同步
  测试同步是否正常方法1
   
  在STANDBY服务器:
   
  SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
   
  SEQUENCE# FIRST_TIM NEXT_TIME
  ---------- --------- ---------
           4 04-MAY-10 04-MAY-10
           5 04-MAY-10 04-MAY-10
   
  在Primary服务器:
   
  SQL>>
   
  现在再回到STANDBY服务器上:
   
  SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
   
   SEQUENCE# FIRST_TIM NEXT_TIME
  ---------- --------- ---------
           4 04-MAY-10 04-MAY-10
           5 04-MAY-10 04-MAY-10
           6 04-MAY-10 04-MAY-10
   
  SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
   
   SEQUENCE# APP
  ---------- ---
           4 YES
           5 YES
           6 YES
   
  发现有一条新的记录,说明同步是正常的.
   
  测试同步是否正常方法2
   
  在Primary服务器上创建一个表
   
  SQL> create table wiliiwin(id integer, name char(10));
  SQL> insert into wiliiwin values(1,'wiliiwin');
  SQL> insert into wiliiwin values(2,'wiliiwiner');
  SQL> insert into wiliiwin values(3,'wiliiwinsi');
  SQL>>
   
  在STANDBY服务器上
   
  SQL>>
                                                                  redo
      
       //报错ORA-16136: Managed Standby Recovery not active
       是由于MRP0服务没有启动,如下是查看各服务状态sql语句
   
     SQL>select process,status,sequence# from v$managed_standby;
     SQL>RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; //启动
                                                                  MRP0服务
   
   
  SQL>>,由于使用的oracle 11g
                                          所以现在也可以应用redo.
   
  SQL> select * from wiliiwin;
   
          ID NAME
  ---------- ----------
           1 wiliiwin
           2 wiliiwiner
           3 wiliiwinsi    //可以看到数据已经同步过来了,由于oracle 11G
                           在open状态下也可以执行redo,所以现在在primary
                           做相关的操作,STANDBY也照样可以同步过来 
                                
  SQL>>STANDBY恢复到mount状态
主从切换
  分为2种切换:
   
  Switchover:
     无损切换,通常是用户手动触发或者有计划的让其自动触发,不会导致数据丢失
   
  Failover:
    不可预知的原因导致Primary数据库故障并且短期内不能恢复就需要failover,可能会导致数据的丢失.
   
    在执行failover之前,尽可能将原Primary数据库的可用redo都复制到
    standby数据库.
   
    如果要转换角色的standby处于maximum protection模式,需要你首先将其
    切换到Maximum Performance模式,操作如下:
   
    SQL>>
   
  Switchover切换步骤
   
    在primary数据库检查是否支持switchover操作
   
    SQL> select switchover_status from v$database;
    SWITCHOVER_STATUS
    -----------------
    TO  STANDBY
   
    如果该列值为”TO STANDBY”则表示primary数据库支持转换为STANDBY角色
    注意:如果是第一次做Switchover的话,这里应该是SESSIONS ACTIVE状态,不用理
    会他,继续下面的操作.
   
    在primary数据库启动switchover
   
    先把primary转换为standby的角色
   
    SQL>>
   
    在primary数据库重启动到mount
   
    SQL> shutdown immediate;
    SQL> startup mount;
   
    在STANDBY数据库上检查是否支持switchover操作
   
    SQL> select switchover_status from v$database;
    SWITCHOVER_STATUS
    -----------------
    TO PRIMARY
   
    值为”TO PRIMARY”,说明支持转换.
    注意:第一次转换这里可能为 not allow,不用理会,继续下面的操作.
   
    在STANDBY数据库转换角色到Primary
   
    SQL>>
    SQL>>read-only状态,需要先shutdown再
                                 startup;
   
   验证数据是否可以同步,按照以前的测试方法进行测试
   
   在新的primary数据库上执行
   
   SQL> insert into wiliiwin values(4,’wiliansi’);
   
   然后在新的STANDBY数据库上执行
   
   SQL> select * from wiliiwin;
   
  Failover切换
   
   检查归档文件是否连续
   
   在STANDBY数据库上查询V$ARCHIVE_GAP视图,看归档文件是否连续
   
   SQL> SELECT THREAD#,LOW_SEQUENCE#,HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
   
   如果返回的有记录,按照列出的记录号复制对应的归档文件到待转换的STANDBY服
   务器.
   
   必须确保所有已生成的归档文件均已存在于STANDBY服务器,不然可能会数据不一
   致造成转换时的报错.文件复制之后,将其加入数据字典
   
    SQL>>;
   
    检查归档文件是否完整
    
    SQL> select distinct thread#,max(sequence#)over(partition by thread#)
         a from v$archived_log;
   
    取得当前数据库各线程已归档文件最大序列,如果primary和standby最大序号不
    相同,必须将多出的序号对应到归档文件复制到待转换的STANDBY服务器.要是
    primary完全不可用了,此时可能会丢失一些数据.
   
    启动failover
   
    SQL>>
   
   
    切换物理STANDBY角色到primary
   
    SQL>>
   
    启动新的primary数据库
   
    SQL>>
   
    关于测试我这里就不做了,只要能查询插入应该没有什么问题.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-153394-1-1.html 上篇帖子: Oracle Database In 下篇帖子: MAC+Vmware Fusion安装Oracle11g RAC
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表