12C關於CDB、PDB引數的區別和總結
以下結論皆經過實驗驗證,版本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部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2674870/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 12C關於CDB、PDB建立AWR的方法和總結
- 12C關於CDB、PDB 臨時temp表空間的總結
- 12C關於CDB、PDB 回滾undo表空間的總結
- 12C關於CDB、PDB 日誌檔案redo log的總結
- Oracle 12C 中CDB和PDB的引數檔案管理Oracle
- 12C關於CDB、PDB的官方解釋
- oracle 12c PDB隨CDB啟動和連結PDB的方式Oracle
- CDB和PDB關於使用者建立和使用者許可權區別
- 12C多租戶關於CDB、PDB的常用SQL語句SQL
- 【12c cdb pdb】實驗
- 【CDB】怎樣修改PDB的記憶體引數記憶體
- 4.3.2.2 關於CDB Root和PDB$SEED檔案的名稱和位置
- oracle 12c中CDB和PDB的備份還原實驗Oracle
- 【BAK_ORACLE】Oracle 12c之CDB與PDB的備份與恢復(三)CDB與PDB的備份方式Oracle
- 【ASK_ORACLE】Oracle 12c之CDB與PDB的備份與恢復(一)什麼是CDB與PDB?Oracle
- Oracle 12c系列(七) | Non-CDB轉換為PDBOracle
- 12C把non-CDB的單庫匯入到CDB裡面當成PDB的方法
- 3.1.2 CDB和PDB的職責分離
- 【CDB】Oracle CDB/PDB常用管理命令Oracle
- Oracle 12c 手動建立CDB和非CDBOracle
- 12C針對cdb全備與 PDB執行不完全恢復(基於SCN)
- 12C關於CDB、PDB線上移動資料檔案、線上重新命名資料檔案的操作說明
- 預設引數和關鍵字參數列面上最大的區別是?
- 【RECO_ORACLE】Oracle 12c之CDB與PDB的備份與恢復(四)PDB的幾種恢復方式Oracle
- cookie和session的區別(全面總結)CookieSession
- js中==和===的區別以及總結JS
- Sqlserver 關於臨時表和表變數的總結SQLServer變數
- 2.6.2 Overview of Flashback PDB in a CDBView
- Oracle:PDB 引數管理Oracle
- 關於gcc、make和CMake的區別GC
- oracle 12c 針對cdb的差異0備與對pdb進行恢復Oracle
- python疑問5:位置引數,預設引數,可變引數,關鍵字引數,命名關鍵字引數區別Python
- 【Java】sleep和wait區別總結JavaAI
- 偽元素和偽類的區別總結
- 2.2.1 關於CDB的特性
- MySQL中Redo Log相關的重要引數總結MySql
- 關於stable_sort()和sort()的區別:
- subprocess中命令為引數序列和字串的區別字串