原文はこちら。
https://blogs.oracle.com/UPGRADE/entry/why_does_a_pdb_require
version Aから外し、version Bへつなぎ直した時に、Pluggable Database (PDB) をアップグレード(もしくはダウングレード)しなければならない理由は何なのでしょう。
この質問は、Royと共にワークショップ中にUpgrades and Oracle Multitenantを説明する際によくいただく質問の一つです。
ドキュメントを見てみると、以下のような記述があります。
しかし残念ながらこれは全てのオブジェクトに対して完全にあてはまるとは言えません。
OBJ$のような基本ディクショナリ構造の簡単なクエリを実行すると、PDBが自身でデータディクショナリを持っていることが容易にわかります。実際にPDBとのみ紐付いているものがあります。例えば、
Pluggable Database (PDB) 自身がデータディクショナリを有しているので、異なるバージョン間を移送する場合、PDBのアップグレード(もしくはダウングレード)が必須です。自動的にアップグレードされることはありません。
https://blogs.oracle.com/UPGRADE/entry/why_does_a_pdb_require
version Aから外し、version Bへつなぎ直した時に、Pluggable Database (PDB) をアップグレード(もしくはダウングレード)しなければならない理由は何なのでしょう。
この質問は、Royと共にワークショップ中にUpgrades and Oracle Multitenantを説明する際によくいただく質問の一つです。
ドキュメントを見てみると、以下のような記述があります。
Oracle® Database概要 12cリリース1 (12.1)
マルチテナント・アーキテクチャの概要
CDBのデータ・ディクショナリ・アーキテクチャ
http://docs.oracle.com/cd/E57425_01/121/CNCPT/cdblogic.htm#CIHIBAIE
Oracle® Database Concepts 12c Release 1 (12.1)
Overview of the Multitenant Architecture
Data Dictionary Architecture in a CDB
http://docs.oracle.com/database/121/CNCPT/cdblogic.htm#CIHIBAIE
しかし残念ながらこれは全てのオブジェクトに対して完全にあてはまるとは言えません。
OBJ$のような基本ディクショナリ構造の簡単なクエリを実行すると、PDBが自身でデータディクショナリを持っていることが容易にわかります。実際にPDBとのみ紐付いているものがあります。例えば、
DBA_OBJECTS
のSHARING
列です。メタデータ・リンクの場合、DBA_OBJECTS
はCDB$ROOT
にあるDBA_OBJECTS
の親と情報を交換することを示しています。しかし、これはPDBが空のメタオブジェクトである、ということを意味するわけではありません。PDBには実際に表が存在しますし、領域を割り当てています。ご自身で確かめてみてください。他のオブジェクトが実際に領域を割り当てているように、PDB内のOBJ$
に実際に同じ属性があることがわかるでしょう。しかし、PDBやCDB$ROOT
にもセグメントを有しています。もちろんそのオブジェクト定義はPDBにも存在します。- CDB$ROOT
- PDB
Pluggable Database (PDB) 自身がデータディクショナリを有しているので、異なるバージョン間を移送する場合、PDBのアップグレード(もしくはダウングレード)が必須です。自動的にアップグレードされることはありません。