ITPub博客

首页 > 数据库 > Oracle > 12C关于CDB、PDB参数的区别和总结

12C关于CDB、PDB参数的区别和总结

原创 Oracle 作者:lusklusklusk 时间:2020-02-09 11:26:14 0 删除 编辑

以下结论皆经过实验验证,版本12.2,为方便理解,本文中CDB指的是根容器CDB$ROOT


1、CDB和PDB共用一个参数文件,CDB使用spfileSID.ora,则PDB里面show parameter spfile时看到的也是spfileSID.ora,CDB使用spfile.ora,则PDB里面show parameter spfile时看到的也是spfile.ora,CDB使用initSID.ora,则PDB里面show parameter spfile时也看不到任何文件,PDB的参数信息不会出现在spfile或pfile文件中,而是直接从CDB中继承。



2、CDB执行alter system修改参数无论加不加CONTAINER,也无论CONTAINER值是ALL还是CURRENT,PDB也一样修改了;PDB执行alter system修改参数,只对该PDB生效,PDB执行alter system修改参数不能加CONTAINER = ALL,否则报错ORA-65050: Common DDLs only allowed in root,CONTAINER = ALL只能在CDB容器执行。


以下两条语句等价,因为CONTAINER的默认值是CURRENT

ALTER SYSTEM SET parameter_name=value;

ALTER SYSTEM SET parameter_name=value CONTAINER=CURRENT;


以下两条语句在CDB中等价,因为CDB修改了,PDB也一样修改了

ALTER SYSTEM SET parameter_name=value;

ALTER SYSTEM SET parameter_name=value CONTAINER=ALL;



3、PDB能够执行alter system修改的参数,必须是该参数对应的V$SYSTEM_PARAMETER.ISPDB_MODIFIABLE='TRUE',否则会报错ORA-65040: operation not allowed from within a pluggable database,PDB执行alter system修改的参数的信息存放在CDB的PDB_SPFILE$中,而不是PDB的PDB_SPFILE$中,PDB的PDB_SPFILE$表永远都是空的。PDB执行alter system修改的参数无论数据库重启、CDB重新修改、克隆、unplug等等操作,该参数在该PDB中不变继续生效,也就是说手工修改某个PDB的参数之后,那么此参数在这个PDB中就不受CDB参数控制了,再修改CDB的参数也无法修改该PDB的这个参数值,因为该参数和该PDB的信息已经存放在了数据字典中。


PDB从CDB继承参数值,除非参数已经在PDB级别被重写,PDB级别被重写的参数信息存储在CDB的PDB_SPFILE$中,PDB优先参照CDB中PDB_SPFILE$该PDB的参数,如果CDB的PDB_SPFILE$被清空,则PDB自动从CDB继承参数值。每个容器都有一个PDB_SPFILE$,即PDB_SPFILE$在CDB和PDB级别都存在,但只有CDB的PDB_SPFILE$有值,PDB的PDB_SPFILE$都是空的。


当然如果某个PDB执行alter system修改时加了scope为memory,信息不会写入CDB的PDB_SPFILE$中,PDB在重启后该参数失效,和11g一样



4、PDB执行unplug后该PDB的参数信息会写进xml文件,此时CDB的PDB_SPFILE$中还有该PDB的参数信息,show pdbs还可以看到该PDB, 也就是说当一个PDB被拔出时,它自己的初始化参数不会复制到PDB自己的PDB_SPFILE$中,仍旧存在CDB的PDB_SPFILE$中。当执行drop pluggable database后,CDB的PDB_SPFILE$看不到该PDB的记录了,该PDB的记录被清除了,show pdbs也看不到该PDB,当该PDB重新create using xml到CDB时后,该参数会重新加载回PDB并写入CDB的PDB_SPFILE$中



5、v$system_parameter可以查看到CDB和所有PDB的参数(PDB$SEED除外),每个容器以con_id区分。




问答:

1. CDB级别修改参数是否影响到PDB级别?

会,会影响到所有PDB,除非某个PDB自己单独修改过该参数


2. PDB级别修改参数是否影响到CDB级别?

不会,不会影响到CDB级别及其它PDB。

来自 “ ITPUB博客 ” ,链接:/30126024/viewspace-2674870/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Welcome to Lukes DB HOME。 10G OCP、11G OCM, 8年以上DBA工作经验,博客仅记录自己的一个学习过程,不代表完全准确,如有需要,欢迎转载。

注册时间:2015-02-02

  • 博文量
    396
  • 访问量
    582800