• Oracle-DataGuard参数enabled_PDBs_on_standby禁用PDB同步


    前言:

    enabled_PDBs_on_standby参数用于在DG主备同步中指定允许同步到备库的pdb,那么如何使用该参数指定同步的pdb以及参数的作用范围是什么?

    本文接下来的内容将对enabled_PDBs_on_standby参数的使用以及作用范围进行解析。

    数据库环境:

    db_role

    uniq_n

    root_db

    pdb

    primary

    orcl

    CDB$ROOT

    PDB$SEED

    pdb1

    pdb2

    standby

    orcldg

    CDB$ROOT

    PDB$SEED

    pdb1

    pdb2

    参数信息:

    参数只在备库设置生效,默认值为*,即不限制pdb的同步,参数主要控制新建的pdb是否同步到备库,不作用已有pdb的同步

    测试参数对已有pdb的同步是否存在作用:

    1 在备库orcldg配置只允许pdb1进行同步

    1. SQL> alter system set enabled_PDBs_on_standby=pdb1;
    2. System altered.
    3. SQL>
    4. show parameter enable
    5. NAME TYPE VALUE
    6. ------------------------------------ ----------- ------------------------------
    7. enabled_PDBs_on_standby string PDB1
    8. SQL>
    9. ---备库重启mrp进程
    10. alter database recover managed standby database cancel;
    11. alter database recover managed standby database using current logfile disconnect from session;

    2 在主库orcl pdb2创建测试表数据

    1. SQL> select database_role from v$database;
    2. DATABASE_ROLE
    3. ----------------
    4. PRIMARY
    5. SQL>
    6. alter session set container=pdb2;
    7. Session altered.
    8. SQL>
    9. SQL> create table test20220820 as select * from dba_objects;
    10. Table created.

    3 在备库orcldg检查pdb2依然在进行数据同步

    1. ---可以查到同步过来的test20220820数据
    2. SQL> select database_role from v$database;
    3. DATABASE_ROLE
    4. ----------------
    5. PHYSICAL STANDBY
    6. SQL> alter session set container=pdb2;
    7. Session altered.
    8. SQL> select count(*) from test20220820;
    9. COUNT(*)
    10. ----------
    11. 72356

    测试结果:enabled_PDBs_on_standby对已有备库的PDB同步不起限制作用

    测试对新建pdb的限制作用:

    1 在备库设置只允许pdb1的同步

    1. SQL> alter system set enabled_PDBs_on_standby=pdb1;
    2. System altered.
    3. SQL> show parameter pdbs;
    4. NAME TYPE VALUE
    5. ------------------------------------ ----------- ------------------------------
    6. autotask_max_active_pdbs integer 2
    7. enabled_PDBs_on_standby string PDB1
    8. max_pdbs integer 254
    9. target_pdbs integer 2

    注:create pluggable database standbys参与enabled_pdbs_on_standby的关系参考以下关系图

    ​ Case

     Parameter  : Value

     Datafile  in Standby (*1)

     Recovery  Status in Standby (*2)

     1

     STANDBYS  : ALL

     enabled_pdbs_on_standby  : Included in PDB-list

     Created

     Enable

     2

     STANDBYS  : ALL

     enabled_pdbs_on_standby  : Not included in PDB-list

     Not  Created

     Disable

     3

     STANDBYS  : NONE

     enabled_pdbs_on_standby  : Included in PDB-list

     Created

     Enable

     4

     STANDBYS  : NONE

     enabled_pdbs_on_standby  : Not included in PDB-list

     Not  Created

     Disable

     5

     STANDBYS  : ALL

     enabled_pdbs_on_standby  : *

     Created

     Enable

     6

     STANDBYS  : NONE

     enabled_pdbs_on_standby  : *

     Not  Created

     Disable

    2 在主库orcl创建pdb3数据库

    1. ---创建成功并open
    2. SQL> create pluggable database PDB3 admin user pdbadmin identified by "pdbadmin" STANDBYS=ALL;
    3. Pluggable database created.
    4. SQL> alter pluggable database pdb3 open;
    5. Pluggable database altered.
    6. SQL> show pdbs;
    7. CON_ID CON_NAME OPEN MODE RESTRICTED
    8. ---------- ------------------------------ ---------- ----------
    9. 2 PDB$SEED READ ONLY NO
    10. 3 PDB3 READ WRITE NO
    11. 4 PDB1 READ WRITE NO
    12. 5 PDB2 READ WRITE NO
    13. SQL>

    3 查看备库orcldg的同步情况

    1. ---pdb3虽然可以在备库看到,但数据文件并没有进行恢复同步,是个空库
    2. 1 select name,status
    3. 2 from v$datafile
    4. 3* where con_id=3
    5. NAME STATUS
    6. ---------------------------------------------------------------------------------------------------- -------
    7. /u01/app/oracle/product/19.0.0/dbhome_1/dbs/UNNAMED00049 SYSOFF
    8. /u01/app/oracle/product/19.0.0/dbhome_1/dbs/UNNAMED00050 RECOVER
    9. /u01/app/oracle/product/19.0.0/dbhome_1/dbs/UNNAMED00051 RECOVER
    10. SQL> select name,status
    11. 2 from v$datafile_header
    12. 3 where con_id=3;
    13. NAME STATUS
    14. ---------------------------------------------------------------------------------------------------- -------
    15. OFFLINE
    16. OFFLINE
    17. OFFLINE
    18. SQL> show pdbs;
    19. CON_ID CON_NAME OPEN MODE RESTRICTED
    20. ---------- ------------------------------ ---------- ----------
    21. 2 PDB$SEED READ ONLY NO
    22. 3 PDB3 MOUNTED
    23. 4 PDB1 READ ONLY NO
    24. 5 PDB2 READ ONLY NO
    25. SQL>

    4 查看备库orcldg的后台日志

    1. ---可以看到对于pdb3的数据文件skipped for excluded/offline tablespace的提示
    2. Recovery created pluggable database PDB3
    3. PDB3(3):File copy for ts-SYSTEM skipped for excluded/offline tablespace
    4. PDB3(3):File #49 added to control file as 'UNNAMED00049'. Originally created as:
    5. PDB3(3):'/u01/app/oracle/oradata/ORCL/E6BDA43BAF9E31C0E0536402A8C0F9C8/datafile/o1_mf_system_kj3xczfk_.dbf'
    6. PDB3(3):because the pluggable database was created with nostandby
    7. PDB3(3):or the tablespace belonging to the pluggable database is
    8. PDB3(3):offline.
    9. 2022-08-21T17:06:10.657633+08:00
    10. Errors in file /u01/app/oracle/diag/rdbms/orcldg/orcldg/trace/orcldg_dbw0_5805.trc:
    11. ORA-01157: cannot identify/lock data file 202 - see DBWR trace file
    12. ORA-01110: data file 202: '/u01/app/oracle/oradata/ORCL/datafile/temp012022-08-16_16-38-20-408-PM.dbf'
    13. ORA-27037: unable to obtain file status
    14. Linux-x86_64 Error: 2: No such file or directory
    15. Additional information: 7
    16. 2022-08-21T17:06:10.661330+08:00
    17. Errors in file /u01/app/oracle/diag/rdbms/orcldg/orcldg/trace/orcldg_dbw0_5805.trc:
    18. ORA-01186: file 202 failed verification tests
    19. ORA-01157: cannot identify/lock data file 202 - see DBWR trace file
    20. ORA-01110: data file 202: '/u01/app/oracle/oradata/ORCL/datafile/temp012022-08-16_16-38-20-408-PM.dbf'
    21. 2022-08-21T17:06:10.661425+08:00
    22. File 202 not verified due to error ORA-01157
    23. 2022-08-21T17:06:10.707125+08:00
    24. PDB3(3):File copy for ts-SYSAUX skipped for excluded/offline tablespace
    25. PDB3(3):File #50 added to control file as 'UNNAMED00050'. Originally created as:
    26. PDB3(3):'/u01/app/oracle/oradata/ORCL/E6BDA43BAF9E31C0E0536402A8C0F9C8/datafile/o1_mf_sysaux_kj3xczft_.dbf'
    27. PDB3(3):because the pluggable database was created with nostandby
    28. PDB3(3):or the tablespace belonging to the pluggable database is
    29. PDB3(3):offline.

    5 将备库orcldg设置为没有pdb同步限制*

    1. SQL> alter system set enabled_PDBs_on_standby=*;
    2. ---主库再重新创建pdb3
    3. SQL> create pluggable database PDB3 admin user pdbadmin identified by "pdbadmin" STANDBYS=ALL;
    4. Pluggable database created.
    5. SQL> SQL> alter pluggable database pdb3 open;
    6. Pluggable database altered.
    7. SQL> show pdbs;
    8. CON_ID CON_NAME OPEN MODE RESTRICTED
    9. ---------- ------------------------------ ---------- ----------
    10. 2 PDB$SEED READ ONLY NO
    11. 4 PDB1 READ WRITE NO
    12. 5 PDB2 READ WRITE NO
    13. 6 PDB3 READ WRITE NO

    6 查看备库orcldg的pdb3同步情况

    1. ---pdb3可以在备库看到,数据文件也进行恢复同步
    2. SQL> select name,status
    3. 2 from v$datafile_header
    4. 3 where con_id=6;
    5. NAME STATUS
    6. ---------------------------------------------------------------------------------------------------- -------
    7. /u01/app/oracle/oradata/ORCLDG/E6BDA43BAFA331C0E0536402A8C0F9C8/datafile/o1_mf_system_kj3y7944_.dbf ONLINE
    8. /u01/app/oracle/oradata/ORCLDG/E6BDA43BAFA331C0E0536402A8C0F9C8/datafile/o1_mf_sysaux_kj3y7945_.dbf ONLINE
    9. /u01/app/oracle/oradata/ORCLDG/E6BDA43BAFA331C0E0536402A8C0F9C8/datafile/o1_mf_undotbs1_kj3y7945_.db ONLINE
    10. ---pdb3可以正常打开
    11. SQL> alter pluggable database pdb3 open;
    12. Pluggable database altered.
    13. SQL> show pdbs;
    14. CON_ID CON_NAME OPEN MODE RESTRICTED
    15. ---------- ------------------------------ ---------- ----------
    16. 2 PDB$SEED READ ONLY NO
    17. 4 PDB1 READ ONLY NO
    18. 5 PDB2 READ ONLY NO
    19. 6 PDB3 READ ONLY NO

    测试结果:enabled_PDBs_on_standby用于控制新建的pdb是否同步到备库,对于参数所配置允许的pdb,备库会自动对pdb进行同步

    总结:

    1 enabled_PDBs_on_standby对已有备库的PDB同步不起限制作用

    2 enabled_PDBs_on_standby用于控制新建的pdb是否同步到备库,对于参数所配置允许的pdb,备库会自动对pdb进行同步

  • 相关阅读:
    产品外观设计公司怎么选?这篇文章告诉你
    2022-08-27 第五组 张明敏 学习笔记
    写好 Spring Starter : 控制好Bean的加载顺序与原理
    计算机的源头:二进制
    【混沌工程】混沌工程原理
    【小程序】IDEA实现qq邮件的发送
    面试--spring基础
    Java-文件操作
    SourceTree 使用
    hdlbits系列verilog解答(always块casez语句)-35
  • 原文地址:https://blog.csdn.net/sinat_36757755/article/details/126442769