• Oracle12c多租户CDB 与 PDB 参数文件位置探讨、查询 CDB 与 PDB 不同值的参数



    一、 Oracle12c多租户CDB 与 PDB 参数文件位置

    CDB的参数文件依然使用12c以前的SPIFLE,pdb的参数文件不会出现在SPFILE中,而是直接从CDB中继承,如果PDB中有privete Local parameter 会存在 CDB 的 PDB_SPFILE$字典表 中以con_id区别,当PDB UN-Plug时,PDB参数会写入PDB的XML文件中,当drop pluggable database后,pdb信息和PDB_SPFILE$记录也会被清除。再当PDB重新Plug-in到CDB时会重新加载回PDB, 但是由于一些PDB特殊参数在plug-in时会被遗弃。

    实验验证:

    SQL> show con_name

    CON_NAME
    ------------------------------
    CDB$ROOT
    SQL> show parameter spfile

    NAME     TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    spfile     string/home/oracle/app/oracle/produc
    t/12.2.0/dbhome_1/dbs/spfilean
    dycdb.ora
    SQL> alter session set container=pdb01;

    Session altered.

    SQL> show parameter spfile

    NAME     TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    spfile     string/home/oracle/app/oracle/produc
    t/12.2.0/dbhome_1/dbs/spfilean
    dycdb.ora
    到这一步验证了:CDB的参数文件依然使用12c以前的SPIFLE,pdb的参数文件不会出现在SPFILE中,而是直接从CDB中继承。

    SQL> show parameter undo_retention

    NAME     TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    undo_retention     integer900
    SQL> alter system set undo_retention=901;

    System altered.

    SQL> show parameter undo_reten

    NAME     TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    undo_retention     integer901

    SQL> select pdb_uid,name,value$ from PDB_SPFILE$;

    no rows selected
    SQL> alter session set container=cdb$root;

    Session altered.

    SQL> select pdb_uid,name,value$ from PDB_SPFILE$;

       PDB_UID NAME    VALUE$
    ---------- ---------------------------------------- -------------------------
    2550500229 undo_retention    901

    SQL> select con_id,dbid,con_uid,guid from v$pdbs;

        CON_ID DBIDCON_UID GUID
    ---------- ---------- ---------- --------------------------------
    2 2683777510 2683777510 4ECF66D93A6233B5E0531019640A6041
    3 2550500229 2550500229 4ECF8621E3DA38EEE0531019640AA598

    到这一步验证了:如果PDB中有privete Local parameter 会存在 CDB 的 PDB_SPFILE$字典表 中以con_id区别

    SQL>alter pluggable database pdb01 close immediate;
    SQL>alter pluggable database pdb01 unplug into '/home/oracle/pdb01.xml';
    [oracle@12c01 ~]$ pwd
    /home/oracle
    [oracle@12c01 ~]$ ll pdb01.xml 
    -rw-r--r--. 1 oracle oinstall 7758 May  7 05:09 pdb01.xml
    [oracle@12c01 ~]$ cat pdb01.xml 
    <?xml version="1.0" encoding="UTF-8"?>
    <PDB>
      <xmlversion>1</xmlversion>
      <pdbname>PDB01</pdbname>
      <cid>3</cid>
      <byteorder>1</byteorder>
      <vsn>203424000</vsn>
      <vsns>
        <vsnnum>12.2.0.1.0</vsnnum>
        <cdbcompt>12.2.0.0.0</cdbcompt>
        <pdbcompt>12.2.0.0.0</pdbcompt>
        <vsnlibnum>0.0.0.0.24</vsnlibnum>
        <vsnsql>24</vsnsql>
        <vsnbsv>8.0.0.0.0</vsnbsv>
      </vsns>
      <dbid>2550500229</dbid>
    ...省略
    SQL> show pdbs   

        CON_ID CON_NAME  OPEN MODE  RESTRICTED
    ---------- ------------------------------ ---------- ----------
    2 PDB$SEED  READ ONLY  NO
    3 PDB01  MOUNTED
    SQL> drop pluggable database pdb01 keep datafiles;

    Pluggable database dropped.

    SQL> show pdbs    

        CON_ID CON_NAME  OPEN MODE  RESTRICTED
    ---------- ------------------------------ ---------- ----------
    2 PDB$SEED  READ ONLY  NO
    SQL> select pdb_uid,name,value$ from PDB_SPFILE$;

    no rows selected
    到这一步验证了:PDB un-plug后pdb parameter and spfile会先进xml文件, 当drop pluggable database后,pdb信息和PDB_SPFILE$记录也会被清除。

    SQL> create pluggable database pdb01 using '/home/oracle/pdb01.xml' nocopy;

    SQL> show pdbs

        CON_ID CON_NAME  OPEN MODE  RESTRICTED
    ---------- ------------------------------ ---------- ----------
    2 PDB$SEED  READ ONLY  NO
    3 PDB01  MOUNTED
    SQL> alter pluggable database pdb01 open;
    Pluggable database altered.
    SQL> select pdb_uid,name,value$ from PDB_SPFILE$;

       PDB_UID NAME    VALUE$
    ---------- ---------------------------------------- -------------------------
    1196085469 undo_retention    901

    到这一步验证了:当PDB重新Plug-in到CDB时会重新加载回PDB, 但是由于一些PDB参数特殊原因在plug-in时会被遗弃。这里因为没有特殊参数,所以没有丢失参数。

    二、 CDB 与 PDB 不同值的相同参数

    多租户环境下,如果在设定参数时,cdb中设置CONTAINER=ALL,那么PDB的参数也会继承这个值,但可以通过ALTER SYSTEM在PDB container中修改 PDB local parameter,将覆盖(优先)从CDB继承的参数。有时候,我们有中需求,需要核实对比 PDB 中哪些参数与 CDB 不同。我们该怎么办,下面我们一起探讨下。

    例子: 查询 名为 pdb01 的PDB 与 CDB 不同值的相同参数有哪些
    1. 实验环境查看
    SQL> show con_name

    CON_NAME
    ------------------------------
    CDB$ROOT
    SQL> show parameter undo_reten

    NAME     TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    undo_retention     integer900
    SQL> alter session set container=pdb01;
    SQL> show parameter undo_reten

    NAME     TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    undo_retention     integer901
    2. 查询 PDB 中哪些参数与 CDB 不同
    SQL>  
    set lin 300;
    set pages 300;
    col pdb_name for a30;
    col parameter for a25;
    col value$ for a20;
    select v.dbid,v.name pdb_name,p.name parameter,p.value$
    from pdb_spfile$ p,v$pdbs v
    where p.pdb_uid=v.con_uid and v.name='PDB01' ;
          DBID PDB_NAME                       PARAMETER                 VALUE$
    ---------- ------------------------------ ------------------------- -------------
    2550500229 PDB01                          undo_retention            901

  • 相关阅读:
    杂记-2
    2019CSP-S游记
    csp2020
    特征根法小记
    csp模拟赛低级错误及反思
    备份
    黑科技——树剖两次dfs转一次dfs!
    输出天干地支
    蓝桥0531-输出Y
    蓝桥0615-判断四位数字前后两组是否相等
  • 原文地址:https://www.cnblogs.com/andy6/p/6818847.html
Copyright © 2020-2023  润新知