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

xiaoxiao2021-02-28  102

一、 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     integer 900 SQL> alter system set undo_retention=901; System altered. SQL> show parameter undo_reten NAME     TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_retention     integer 901 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 DBID CON_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     integer 900 SQL> alter session set container=pdb01; SQL> show parameter undo_reten NAME     TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_retention     integer 901 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
转载请注明原文地址: https://www.6miu.com/read-63948.html

最新回复(0)