zoukankan      html  css  js  c++  java
  • 18cRAC dataguard主库克隆pdb从库报错误

    环境:

    主库:2节点rac

    从库:单节点

    数据库版本:18C

     

     

    1. Rac主库上通过克隆的方法创建

     SQL> create pluggable database pdb6 from pdb1;

     Pluggable database created.

     SQL> show pdbs

         CON_ID CON_NAME                       OPEN MODE  RESTRICTED

    ---------- ------------------------------ ---------- ----------

             2 PDB$SEED                       READ ONLY  NO

             3 PDB1                           READ WRITE NO

             4 PDB2                           READ WRITE NO

             5 PDB3                           READ WRITE NO

             6 PDB4                           READ WRITE NO

             7 PDB5                           READ WRITE NO

             8 PDB6                           MOUNTED

    SQL> alter pluggable database pdb6 open;

     Pluggable database altered.

     

    2.从库报错误

    Errors in file /u01/app/oracle/diag/rdbms/ora18c/ora18c/trace/ora18c_mz00_28293.trc:
    ORA-01110: data file 37: '/u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00037'
    ORA-01565: error in identifying file '/u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00037'
    ORA-27037: unable to obtain file status
    Linux-x86_64 Error: 2: No such file or directory
    Additional information: 7
    2021-05-27T03:38:30.886374-04:00
    Errors in file /u01/app/oracle/diag/rdbms/ora18c/ora18c/trace/ora18c_mz00_28293.trc:
    ORA-01110: data file 38: '/u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00038'
    ORA-01565: error in identifying file '/u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00038'
    ORA-27037: unable to obtain file status
    Linux-x86_64 Error: 2: No such file or directory
    Additional information: 7
    Checker run found 4 new persistent data failures

     

    这种情况就是因为dataguard的db_file_name_convert参数没有设置映射关系导致的

     

    3. 从库查看pdb并尝试打开

     

    SQL> show pdbs;

     

        CON_ID CON_NAME                       OPEN MODE  RESTRICTED

    ---------- ------------------------------ ---------- ----------

             2 PDB$SEED                       READ ONLY  NO

             3 PDB1                           READ ONLY  NO

             4 PDB2                           READ ONLY  NO

             5 PDB3                           READ ONLY  NO

             6 PDB4                           READ ONLY  NO

             7 PDB5                           READ ONLY  NO

             8 PDB6                           MOUNTED

    SQL> alter pluggable database pdb6 open;

    alter pluggable database pdb6 open

    *

    ERROR at line 1:

    ORA-01111: name for data file 37 is unknown - rename to correct file

     

    4. 从库查看新增pdb6的文件

    SQL> set linesize 1000;
    SQL> column con_id format 99;
    SQL> column guid format a32;
    SQL> column pdb_name format a8;
    SQL> column file_id format 99;
    SQL> column file_name format a100;
    SQL> select a.CON_ID, a.guid, a.name as pdb_name, b.FILE# as file_id, b.NAME as file_name
      2  from v$pdbs a, v$datafile b
      3  where a.CON_ID = b.CON_ID
      4  and a.name='PDB6';
    
    CON_ID GUID                             PDB_NAME FILE_ID FILE_NAME
    ------ -------------------------------- -------- ------- ----------------------------------------------------------------------------------------------------
         8 C34BB0AC8E731C25E0536F38A8C0162E PDB6          37 /u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00037
         8 C34BB0AC8E731C25E0536F38A8C0162E PDB6          38 /u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00038
         8 C34BB0AC8E731C25E0536F38A8C0162E PDB6          39 /u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00039
         8 C34BB0AC8E731C25E0536F38A8C0162E PDB6          40 /u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00040
         8 C34BB0AC8E731C25E0536F38A8C0162E PDB6          41 /u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00041
         8 C34BB0AC8E731C25E0536F38A8C0162E PDB6          42 /u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00042
         8 C34BB0AC8E731C25E0536F38A8C0162E PDB6          43 /u01/app/oracle/product/18.0.0.0/db_1/dbs/UNNAMED00043
    
    7 rows selected.

     

    5. 恢复pdb6

    SQL>alter session set container=cdb$root;

    SQL>alter system set standby_file_management=auto;

    SQL>alter database recover managed standby database cancel;

    SQL>alter session set container=pdb6;

    SQL>alter pluggable database disable recovery;

     

    RMAN> run{

    set newname for pluggable database pdb6 to new;

    restore pluggable database pdb6 from service tnsslnngk1  ;

    switch datafile all;

    }

    这里的tnsslnngk1是指向rac节点1的tns名 

    tnsslnngk1=
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.111)(PORT = 1521))
        (LOAD_BALANCE = no)
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = slnngk)
          (FAILOVER_MODE =
            (TYPE = SELECT)
            (METHOD = BASIC)
            (RETRIES = 180)
            (DELAY = 5)
          )
        )
      )

    RMAN-00571: ===========================================================

    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

    RMAN-00571: ===========================================================

    RMAN-03002: failure of restore command at 05/27/2021 03:57:00

    RMAN-06553: DB_CREATE_FILE_DEST must be set for SET NEWNAME ... TO NEW

     

    解决办法:

    [oracle@18c_single bak]$ mkdir -p /u01/app/oracle/oradata/ora18c/pdb6

    SQL> connect / as sysdba

    SQL> alter system set db_create_file_dest='/u01/app/oracle/oradata/ora18c/pdb6' scope=both;

     

    修改完成后再次执行:

    RMAN> run{

    set newname for pluggable database pdb6 to new;

    restore pluggable database pdb6 from service tnsslnngk1  ;

    switch datafile all;

    }

    设置db_create_file_dest后恢复的数据文件如下:

    SQL> set linesize 1000;
    SQL> column con_id format 99;
    SQL> column guid format a32;
    SQL> column pdb_name format a8;
    SQL> column file_id format 99;
    SQL> column file_name format a128;
    SQL> select a.CON_ID, a.guid, a.name as pdb_name, b.FILE# as file_id, b.NAME as file_name
      2  from v$pdbs a, v$datafile b
      3  where a.CON_ID = b.CON_ID
      4  and a.name='PDB6';
    
    CON_ID GUID                             PDB_NAME FILE_ID FILE_NAME
    ------ -------------------------------- -------- ------- --------------------------------------------------------------------------------------------------------------------------------
         8 C34BB0AC8E731C25E0536F38A8C0162E PDB6          37 /u01/app/oracle/oradata/ora18c/pdb6/ORA18C/C34BB0AC8E731C25E0536F38A8C0162E/datafile/o1_mf_system_jbynns42_.dbf
         8 C34BB0AC8E731C25E0536F38A8C0162E PDB6          38 /u01/app/oracle/oradata/ora18c/pdb6/ORA18C/C34BB0AC8E731C25E0536F38A8C0162E/datafile/o1_mf_sysaux_jbynnwh6_.dbf
         8 C34BB0AC8E731C25E0536F38A8C0162E PDB6          39 /u01/app/oracle/oradata/ora18c/pdb6/ORA18C/C34BB0AC8E731C25E0536F38A8C0162E/datafile/o1_mf_undotbs1_jbynnzxj_.dbf
         8 C34BB0AC8E731C25E0536F38A8C0162E PDB6          40 /u01/app/oracle/oradata/ora18c/pdb6/ORA18C/C34BB0AC8E731C25E0536F38A8C0162E/datafile/o1_mf_undo_2_jbyno16w_.dbf
         8 C34BB0AC8E731C25E0536F38A8C0162E PDB6          41 /u01/app/oracle/oradata/ora18c/pdb6/ORA18C/C34BB0AC8E731C25E0536F38A8C0162E/datafile/o1_mf_users_jbyno2mx_.dbf
         8 C34BB0AC8E731C25E0536F38A8C0162E PDB6          42 /u01/app/oracle/oradata/ora18c/pdb6/ORA18C/C34BB0AC8E731C25E0536F38A8C0162E/datafile/o1_mf_tps_hxl_jbyno3xx_.dbf
         8 C34BB0AC8E731C25E0536F38A8C0162E PDB6          43 /u01/app/oracle/oradata/ora18c/pdb6/ORA18C/C34BB0AC8E731C25E0536F38A8C0162E/datafile/o1_mf_tps_hxl_jbyno59m_.dbf
    
    7 rows selected.

     

    说明:

    若是不采用配置db_create_file_dest可以采用如下方法恢复,指定对应的文件

    mkdir -p /u01/app/oracle/oradata/ora18c/pdb6

    RMAN> run{
    set newname for datafile 44 to '/u01/app/oracle/oradata/ora18c/pdb6/system.453.1073623545';
    set newname for datafile 45 to '/u01/app/oracle/oradata/ora18c/pdb6/sysaux.454.1073623545';
    set newname for datafile 46 to '/u01/app/oracle/oradata/ora18c/pdb6/undotbs1.450.1073623545';
    set newname for datafile 47 to '/u01/app/oracle/oradata/ora18c/pdb6/undo_2.451.1073623545';
    set newname for datafile 48 to '/u01/app/oracle/oradata/ora18c/pdb6/users.448.1073623545';
    set newname for datafile 49 to '/u01/app/oracle/oradata/ora18c/pdb6/tps_hxl.449.1073623545';
    set newname for datafile 50 to '/u01/app/oracle/oradata/ora18c/pdb7/tps_hxl.452.1073623545';
    restore pluggable database pdb7 from service tnsslnngk1;
    switch datafile all;
    }

     

    6. 从库应用日志

    SQL> alter session set container=cdb$root;

    SQL> shutdown immediate;

    SQL> startup mount;

    SQL> alter session set container=pdb6;

    SQL> alter pluggable database enable recovery;

    SQL> alter session set container=cdb$root;

    SQL> alter database recover managed standby database disconnect from session;

     

    8. 从库打开数据库

    SQL> alter database recover managed standby database cancel;

    SQL> alter database open;

    SQL> alter database recover managed standby database disconnect from session;

    SQL> alter pluggable database all open;

     

    9. 还原db_create_file_dest参数

    SQL> alter system set db_create_file_dest='' scope=both;

     

    10. 从库配置db_file_name_convert

    上面的配置完成了当前的主库和备份的映射文件的关系,若是以后主库上的某个pdb新增了数据文件,没有配置映射关系的话还是会报错,这个时候就需要配置好如下参数

    SQL> show parameters db_file_name_convert;

    NAME TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    db_file_name_convert string +DATA/slnngk/datafile/, /u01/a
    pp/oracle/oradata/ora18c/, +DA
    TA/slnngk/tempfile/, /u01/app/
    oracle/oradata/ora18c/, +data/
    slnngk/C21CCC2F26B343B4E0536F3
    8A8C01387/datafile/, /u01/app/
    oracle/oradata/ora18c/pdb1/, +
    data/slnngk/C21CD091742C46B3E0
    536F38A8C09100/datafile/, /u01
    /app/oracle/oradata/ora18c/pdb
    2/, +data/slnngk/64A52F53A7693

    NAME TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    286E053CDA9E80AED76/datafile/,
    /u01/app/oracle/oradata/ora18
    c/pdbseed/, +DATA/SLNNGK/C346A
    9F364EC42C8E0536F38A8C026FA/DA
    TAFILE/, /u01/app/oracle/orada
    ta/ora18c/pdb4/, +DATA/SLNNGK/
    C34A5522517E2082E0536F38A8C01C
    FA/DATAFILE/, /u01/app/oracle/
    oradata/ora18c/pdb5/
    pdb_file_name_convert string

     

    把新增的pdb映射关系加上,我这里pdb比较多,文件路径也比较长,修改的时候全部整理成一行,不要换行。

  • 相关阅读:
    Asp.Net MVC4 系列--进阶篇之路由 (2)
    Asp.Net MVC4 系列-- 进阶篇之路由(1)
    ASP.NET MVC AJAX的调用示例
    MVC中Controller控制器相关技术
    MVC中View界面数据呈现示例
    IEnumerable,ICollection,IList,List之间的区别
    Dapper数据库相关操作
    集合类---Map
    工厂模式
    适配器模式与外观模式
  • 原文地址:https://www.cnblogs.com/hxlasky/p/14818603.html
Copyright © 2011-2022 走看看