zoukankan      html  css  js  c++  java
  • 19c_dg搭建测试路径转换失败处理

    一需求、模拟测试19c dg同步新建数据文件失败,如何恢复DG可用

    环境:linux 7,oracle 19.10, RAC 2节点,使用了PDB

    二、实验测试

    2.1 场景一

    主-备正常同步中! 没有配置dg datafile convert参数!
    主库,通过db link从第三套库中复制克隆了一个pdb过来,dg同步新pdb数据的创建,但是由于主备路径的不同,文件创建失败,建立在了一个节点的本地文件系统;

    恢复:
    RMAN>recover database;方式导致DG出现大量600! 铲除dg,重新使用duplicate重建dg,恢复可用!代价太高;

    2.2 场景二

    主-备正常同步! 配置了datafile convert参数,针对所有主库已有cdb,pdb datafile	empfile路径进行转换;
    主库以本地的种子库作为模板,复制新建了一个pdb,主库目录+data/db_name/pdb_function_number/xxx  这个目录convert没有配置,dg同步文件失败!
    
    恢复:
    1.将本地临时目录文件,create调整至+DATA磁盘组;
    SQL> alter system set standby_file_management=MANUAL;
    SQL> alter database create datafile '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00011' as '/home/oracle/test_temp00028';   
    数据文件处于recover状态,开启MRP等待10分钟没有恢复
    2.本次使用远程备份主库新建的Pdb数据文件,进行restore还原数据;
    RMAN>restore pluggable database tt3 from service primary_tns;
    service_name选择的是dg的service_names参数的值,在主库备份后,自动scp到备库,进行restore;
    3.开启MRP进程,新建pdb的文件从recover=>online
    这个场景新的pdb在主库未open!!!

    2.3 场景三

     
    主-备正常同步! 配置了datafile convert参数,针对所有主库已有cdb,pdb datafile	empfile路径进行转换;
    主库以本地的种子库作为模板,复制新建了一个pdb,主库目录+data/db_name/pdb_function_number/xxx  这个目录convert没有配置,dg同步文件失败!
    
    恢复:
    本次场景与场景二十分类似,这个场景是为了测试set newname的效果! 但是由于测试这个场景主库pdb open,因此做这个实验,除了restore pdb之后,开启MRP进程
    等10分钟新的pdb文件也还是recover状态! 从主库备份最新standby controlfile ,dg覆盖后,rename file directory ,open dg!!!
    1.从主库backup restore pdb name
    RMAN>report schema;
    run {
    allocate channel c1 type disk;
    allocate channel c2 type disk;
    allocate channel c3 type disk;
    allocate channel c4 type disk;
    allocate channel c5 type disk;
    allocate channel c6 type disk;
    set newname for pluggable database tt05 to '+DATADG/ORATEST/tt05/DATAFILE/%U';
    RESTORE PLUGGABLE DATABASE TT05 FROM SERVICE 'oraxx';
    switch datafile all;
    }

    2.启用MRP进程!
    recover managed standby database using current logfile disconnect;
    等待10分钟,检查发现pdb name status recover !

    3.dg使用主库最新的standby controlfile进行恢复
    在dg pdb open时,db alert 提示没找到可用的备份进行恢复!!! 但是实际上归档日志肯定是有的!但是控制文件无法识别最新的归档日志进行恢复操作!!!
    主库备份最新的standby
    SQL>ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/tt2.ctl';
    备库
    RMAN>restore controlfile from '/xx/tt2.ctl';

    4.修改大量的文件路径!
    备库restore之前进行备份现有路径,批量人工修改 datafile,tempfile,redo file!

    #rename datafile directory
    select 'alter database rename file '''||member||''' to '||'''+DATADG/ORAXX/ONLINELOG/'||substr(member,instr(member,'/','-1')+1)||''''||';' as "sql_text" from v$logfile where member like '+DATA%';
    select 'alter database rename file '''||NAME||''' to '||'''+DATADG/ORAXX/ONLINELOG/'||substr(NAME,instr(NAME,'/','-1')+1)||''''||';' as "sql_text" from v$TEMPFILE where member like '+DATA%';

      5.再次开启MRP

    SQL>recover managed standby database using current logfile disconnect;
    问题解决!

    2.4 场景四

    本次场景删除convert参数,新建一个PDB,观察DG能否自愈
    DG配置了OMF 及db_create_file_dest +DATADG
    主库新建一个pdb,没有open的情况下! 等待10分钟后,DG自动治愈,new pdb files status recover=>online !!!

    三、总结

    根据上述的4个小测试,我们可以进行汇总,如果出现路径转换的问题,如何处理:

    1.开启MRP进程自愈,前提条件db_create_file_dest ,standby_file_management已配置,[排除convert失败肯定无法自愈】;

    2.手工create datafile方式将文件转移至正确的路径,在开启MRP进程,能否自动处理;

    3.主库对新建的pdb进行备份,dg restore pdb all files,开启MRP, 能否自动处理;

    4.第三步骤不给力,在加一个主库备份最新standby controlfile=>dg 启动,注意rename数据文件、临时文件、日志文件路径及名称,能否自动恢复;

    5.上述都不好使,铲掉重建整个DG!

     

  • 相关阅读:
    Zabbix的前台SQL注射漏洞利用
    LeetCode OJ--Permutation Sequence *
    LeetCode OJ--Next Permutation *
    LeetCode OJ--Permutations II
    LeetCode OJ--Permutations *
    小算法-计算下一个排列
    LeetCode OJ--Gas Station**
    LeetCode OJ--Insert Interval **
    LeetCode OJ--Search Insert Position
    Ruby自动化测试(操作符的坑)
  • 原文地址:https://www.cnblogs.com/lvcha001/p/14803440.html
Copyright © 2011-2022 走看看