暂无图片
暂无图片
暂无图片
暂无图片
1
暂无图片

【DB宝32】Oracle DG环境中主库做闪回操作后,备库如何修复继续同步

DB宝 2021-03-23
1044

目录

    一、下载镜像
    二、DG环境初始化
    三、主库做闪回数据库操作
    四、备库做闪回操作
    五、查询主备库是否实时同步
    六、总结
    复制

    本文介绍一下,在DG环境中,若主库做了闪回数据库的操作后,备库如何通过flashback操作,继续和主库保持同步,而不用重新搭建DG。

    主备库均已开启闪回数据库特性。

    一、下载镜像

    小麦苗DG环境的hub地址:
    https://hub.docker.com/r/lhrbest/dg_pri_11.2.0.4/tags
    https://hub.docker.com/r/lhrbest/dg_phy_11.2.0.4/tags

    1nohup docker pull registry.cn-hangzhou.aliyuncs.com/lhrbest/dg_phy_11.2.0.4:1.0 &
    2nohup docker pull registry.cn-hangzhou.aliyuncs.com/lhrbest/dg_pri_11.2.0.4:1.0 &

    复制

    查看镜像:

    1[root@docker36 ~]# docker images | grep dg
    2registry.cn-hangzhou.aliyuncs.com/lhrbest/dg_phy_11.2.0.4                1.0                 f2ea019fe540        15 hours ago        10.7GB
    3registry.cn-hangzhou.aliyuncs.com/lhrbest/dg_pri_11.2.0.4                1.0                 b7fae2029b40        15 hours ago        10.8GB

    复制

    给镜像打tag:

    1[root@docker36 ~]# docker tag registry.cn-hangzhou.aliyuncs.com/lhrbest/dg_phy_11.2.0.4:1.0 lhrbest/dg_phy_11.2.0.4:1.0
    2[root@docker36 ~]# docker tag registry.cn-hangzhou.aliyuncs.com/lhrbest/dg_pri_11.2.0.4:1.0 lhrbest/dg_pri_11.2.0.4:1.0
    3
    4[root@docker36 ~]# docker images | grep dg
    5lhrbest/dg_phy_11.2.0.4                                                  1.0                 f2ea019fe540        15 hours ago        10.7GB
    6registry.cn-hangzhou.aliyuncs.com/lhrbest/dg_phy_11.2.0.4                1.0                 f2ea019fe540        15 hours ago        10.7GB
    7lhrbest/dg_pri_11.2.0.4                                                  1.0                 b7fae2029b40        15 hours ago        10.8GB
    8registry.cn-hangzhou.aliyuncs.com/lhrbest/dg_pri_11.2.0.4                1.0                 b7fae2029b40        15 hours ago        10.8GB

    复制

    二、DG环境初始化

    DG环境情况见下表:

    项目主库物理备库
    db 类型单实例单实例
    db version11.2.0.4.011.2.0.4.0
    db 存储FSFS
    OS版本RHEL7.6 64位CentOS7.6 64位
    OS hostnameLHR11GLHR11GDG
    IP地址192.168.68.68192.168.68.69
    ORACLE_SIDLHR11GLHR11GDG
    db_name/GLOBAL_DBNAMELHR11GLHR11G
    db_unique_nameLHR11GLHR11GDG
    TNS_NAMELHR11GLHR11GDG
    监听端口15211521
    映射的主机端口15281529
    ORACLE_HOME/u01/app/oracle/product/11.2.0.4/dbhome_1/u01/app/oracle/product/11.2.0.4/dbhome_1
    dbid20079475512007947551
     1-- 创建DG的网络
    2docker network create --subnet=192.168.68.0/16 mhalhr
    3docker network inspect mhalhr
    4
    5-- 分别初始化主库和备库
    6docker run -itd --name LHR11G -h LHR11G \
    7  -p 1528:1521 -p 1128:1158 -p 228:22 -p 3398:3389 \
    8  --network mhalhr --ip 192.168.68.68 \
    9  --privileged=true \
    10  lhrbest/dg_pri_11.2.0.4:1.0 init
    11
    12
    13docker run -itd --name LHR11GDG -h LHR11GDG \
    14  -p 1529:1521 -p 1129:1158 -p 229:22 -p 3399:3389 \
    15  --network mhalhr --ip 192.168.68.69 \
    16  --privileged=true \
    17  lhrbest/dg_phy_11.2.0.4:1.0 init
    18
    19
    20 -- 添加网卡
    21docker network connect bridge LHR11G
    22docker network connect bridge LHR11GDG
    23
    24
    25-- 进入容器
    26docker exec -it LHR11G bash
    27docker exec -it LHR11GDG bash
    28
    29-- 分别启动主库、备库和监听
    30su - oracle
    31lsnrctl start
    32sas
    33startup 

    复制

    查询目前DG的同步情况:

     1-- 查询目前DG部署
    2DGMGRL> show configuration
    3
    4Configuration - LHR11G
    5
    6  Protection Mode: MaxPerformance
    7  Databases:
    8    LHR11G   - Primary database
    9    LHR11GDG - Physical standby database
    10
    11Fast-Start Failover: DISABLED
    12
    13Configuration Status:
    14SUCCESS
    15
    16-- 主库
    17SYS@LHR11G> select flashback_on,db_unique_name,database_role from v$database;
    18
    19FLASHBACK_ON                         DB_UNIQUE_NAME                                               DATABASE_ROLE
    20------------------------------------ ------------------------------------------------------------ --------------------------------
    21YES                                  LHR11G                                                       PRIMARY
    22
    23SYS@LHR11G> alter system switch logfile ;
    24
    25System altered.
    26
    27SYS@LHR11G> create table lhr.emp1 as select * from scott.emp;
    28
    29Table created.
    30
    31SYS@LHR11G> select count(*) from lhr.emp1;
    32
    33  COUNT(*)
    34----------
    35        14
    36
    37SYS@LHR11G> select current_scn from v$database;
    38
    39CURRENT_SCN
    40-----------
    41    1363331
    42
    43-- 备库
    44
    45SYS@LHR11GDG> select flashback_on,db_unique_name,database_role from v$database;
    46
    47FLASHBACK_ON                         DB_UNIQUE_NAME                                               DATABASE_ROLE
    48------------------------------------ ------------------------------------------------------------ --------------------------------
    49YES                                  LHR11GDG                                                     PHYSICAL STANDBY
    50
    51
    52SYS@LHR11GDG> select count(*) from lhr.emp1;
    53
    54  COUNT(*)
    55----------
    56        14
    57
    58SYS@LHR11GDG> select current_scn from v$database;
    59
    60CURRENT_SCN
    61-----------
    62    1363340

    复制

    三、主库做闪回数据库操作

     1SYS@LHR11G> select current_scn from v$database;
    2
    3CURRENT_SCN
    4-----------
    5    1363438
    6
    7SYS@LHR11G> create table lhr.emp2 as select * from scott.emp;
    8
    9Table created.
    10
    11SYS@LHR11G> startup force mount
    12ORACLE instance started.
    13
    14Total System Global Area  325685248 bytes
    15Fixed Size                  2252944 bytes
    16Variable Size             188747632 bytes
    17Database Buffers          130023424 bytes
    18Redo Buffers                4661248 bytes
    19Database mounted.
    20SYS@LHR11G> flashback database to scn 1363438;
    21
    22Flashback complete.
    23
    24SYS@LHR11G> alter database open resetlogs;
    25
    26Database altered.
    27
    28SYS@LHR11G> create table lhr.emp3 as select * from scott.emp;
    29
    30Table created.

    复制

    四、备库做闪回操作

     1SYS@LHR11GDG> select count(*) from lhr.emp3;
    2select count(*) from lhr.emp3
    3                         *
    4ERROR at line 1:
    5ORA-00942table or view does not exist
    6
    7
    8SYS@LHR11GDG> select count(*) from lhr.emp2;
    9
    10  COUNT(*)
    11----------
    12        14
    13
    14SYS@LHR11GDG>  select current_scn from v$database;
    15
    16CURRENT_SCN
    17-----------
    18    1363462
    19
    20SYS@LHR11GDG>  select current_scn from v$database;
    21
    22CURRENT_SCN
    23-----------
    24    1363462

    复制

    可见,主备关系已经断掉。接下来,对备库进行闪回。

     1SYS@LHR11GDG> startup force mount
    2ORACLE instance started.
    3
    4Total System Global Area  346562560 bytes
    5Fixed Size                  2253144 bytes
    6Variable Size             209718952 bytes
    7Database Buffers          130023424 bytes
    8Redo Buffers                4567040 bytes
    9Database mounted.
    10SYS@LHR11GDG> flashback database to scn 1363438;
    11flashback database to scn 1363438
    12*
    13ERROR at line 1:
    14ORA-38754: FLASHBACK DATABASE not started; required redo log is not available
    15ORA-38762: redo logs needed for SCN 1363064 to SCN 1363438
    16ORA-38761: redo log sequence 9 in thread 1, incarnation 7 could not be accessed
    17
    18SYS@LHR11GDG> select * from v$flashback_database_log;
    19
    20OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE
    21-------------------- ------------------- ---------------- -------------- ------------------------
    22             1232930 2020-10-27 16:21:36             1440      104857600                        0
    23
    24SYS@LHR11GDG>  flashback database to scn 1361000;
    25
    26Flashback complete.
    27
    28SYS@LHR11GDG> alter database open;
    29
    30Database altered.
    31
    32SYS@LHR11GDG> alter database recover managed standby database using current logfile disconnect from session;
    33
    34Database altered.
    35
    36SYS@LHR11GDG> select count(*) from lhr.emp3;
    37
    38  COUNT(*)
    39----------
    40        14
    41
    42SYS@LHR11GDG> select count(*) from lhr.emp2;
    43select count(*) from lhr.emp2
    44                         *
    45ERROR at line 1:
    46ORA-00942table or view does not exist
    47
    48
    49SYS@LHR11GDG> select current_scn from v$database;
    50
    51CURRENT_SCN
    52-----------
    53    1365917             

    复制

    五、查询主备库是否实时同步

     1[oracle@lhr11g ~]$ dgmgrl /
    2DGMGRL for Linux: Version 11.2.0.4.0 - 64bit Production
    3
    4Copyright (c) 2000, 2009, Oracle. All rights reserved.
    5
    6Welcome to DGMGRL, type "help" for information.
    7Connected.
    8DGMGRL> show configuration
    9
    10Configuration - LHR11G
    11
    12  Protection Mode: MaxPerformance
    13  Databases:
    14    LHR11G   - Primary database
    15    LHR11GDG - Physical standby database
    16
    17Fast-Start Failover: DISABLED
    18
    19Configuration Status:
    20SUCCESS
    21
    22
    23-- 主库建表
    24SYS@LHR11G> create table lhr.emp4 as select * from scott.emp;
    25
    26Table created.
    27
    28-- 备库查询
    29SYS@LHR11GDG> select count(*) from lhr.emp4;
    30
    31  COUNT(*)
    32----------
    33        14
    34


    复制

    DG环境恢复正常。

    六、总结

    1、在DG环境中,建议对主库和备库都开启闪回数据库的特性,并且设置比较大的闪回恢复区(db_recovery_file_dest_size)。

    2、在DG环境中,若主库做了闪回数据库的操作,那么备库必须做相关的闪回操作才能恢复DG的同步关系。

    本文结束。


    • 微信公众号:DB宝,作者:小麦苗
    • 作者博客地址:http://blog.itpub.net/26736162/
    • 作者微信:db_bao

    • 作者QQ:646634621,QQ群:230161599、618766405
    • 提供Oracle OCP、OCM、高可用(rac+dg+ogg)和MySQL DBA培训
    • 版权所有,欢迎分享本文,转载请保留出处

    • 若有侵权请联系小麦苗删除

      ★DB宝分享的IT资料:https://mp.weixin.qq.com/s/Iwsy-zkzwgs8nYkcMz29ag
      ★DB宝笔试面试详解:https://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w
      复制

      长按下图识别二维码,关注小麦苗的微信公众号:DB宝,学习最实用的数据库技术。


      文章转载自DB宝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论

      宋金雨
      暂无图片
      4年前
      评论
      暂无图片 1
      您好,感谢分享,有个疑问,您备库闪回flashback database to scn 1361000,其中的1361000是从哪里获取到的,是取了一个1232930和1363064 之间的scn号吗?
      4年前
      暂无图片 1
      评论