116 DBMS_PDB

DBMS_PDBパッケージは、マルチテナント・コンテナ・データベース(CDB)でプラガブル・データベース(PDB)に関するデータを調査および操作するためのインタフェースを提供します。また、どのデータベース・オブジェクトがアプリケーション共通オブジェクトであるかを指定するインタフェースも含まれています。PDBはCDB間で移行できます。移行が完了すると、移行前のPDBのすべてのバックアップが移行先のCDB内で使用できます。

参照:

この章のトピックは、次のとおりです:

116.1 DBMS_PDBの概要

マルチテナント・コンテナ・データベース(CDB)は、0、1または多数のユーザー作成のプラガブル・データベース(PDB)を含むOracleのデータベースです。DBMS_PDBパッケージは、プラガブル・データベース(PDB)に関するデータを調査および操作するためのインタフェースを提供します。このパッケージのサブプログラムでは、アプリケーション・コンテナで、データベース・オブジェクトをデータリンク・オブジェクト、拡張データリンク・オブジェクトまたはメタデータリンク・オブジェクトのいずれかのタイプのアプリケーション共通オブジェクトに設定することもできます。

データリンク・アプリケーション共通オブジェクトは、アプリケーション・コンテナ内のすべてのアプリケーションPDBによってアクセスおよび変更できるアプリケーション・ルートにデータを格納します。拡張データリンク・オブジェクトの場合、各アプリケーションPDBは、アプリケーション・ルートの共通データを共有しながら特定の独自データを作成できます。したがって、拡張データリンク・オブジェクトの場合、アプリケーション・ルートに格納されたデータのみがすべてのアプリケーションPDBで共通のデータとなります。メタデータリンク・アプリケーション共通オブジェクトは、表などの特定のオブジェクトのメタデータをアプリケーション・ルートに格納するため、アプリケーション・コンテナ内のコンテナは同じオブジェクト構造を持ちますが、データは異なります。このパッケージには、データベース・オブジェクトがアプリケーション共通オブジェクトではないことを指定するプロシージャも含まれます。

通常、このパッケージのサブプログラムは次の場合に使用されます。

  • PDBにインストールされたアプリケーションがアプリケーション・コンテナに移行される場合。アプリケーションは、アプリケーション・ルートまたはアプリケーションPDBに移行できます。たとえば、Oracle Database 12cリリース1 (12.1) CDBに接続中のPDBにインストールされているアプリケーションを、Oracle Database 12cリリース2 (12.2) CDBのアプリケーション・コンテナに移行できます。

  • アプリケーション共通オブジェクトを設定できないインストール・プログラムを使用して、アプリケーションがアプリケーション・ルートにインストールされている場合。

参照:

アプリケーション・コンテナへのアプリケーションの移行の詳細は、『Oracle Database管理者ガイド』を参照してください。

116.2 DBMS_PDBのセキュリティ・モデル

ユーザーがDBMS_PDBパッケージのプロシージャを実行するには、EXECUTE権限が必要です。

116.3 DBMS_PDBサブプログラムの要約

この表は、DBMS_PDBパッケージのサブプログラムについて説明しています。

表116-1 DBMS_PDBパッケージのサブプログラム

サブプログラム 説明

CHECK_PLUG_COMPATIBILITYファンクション

プラガブル・データベース(PDB)について記述されたXMLファイルを使用して、特定のマルチテナント・コンテナ・データベース(CDB).に接続可能かどうかを判別します。

DESCRIBEプロシージャ

指定したプラガブル・データベース(PDB).が記述されたXMLファイルを生成します。

EXPORTRMANBACKUPプロシージャ

非CDBをPDBとして移行する場合にのみコールする必要があります。このプロシージャは、非CDBデータベースで実行する必要があります。PDBを再配置する場合は、アンプラグイン中に自動的にコールされます。

RECOVERプロシージャ

プラガブル・データベース(PDB).に属するデータファイルを使用することで、プラガブル・データベースについて記述されたXMLファイルを生成します。

REMOVE_LINKプロシージャ

データベース・オブジェクトがアプリケーション共通オブジェクトではないことを指定します。

SET_DATA_LINKEDプロシージャ

データベース・オブジェクトをデータリンク・アプリケーション共通オブジェクトに設定します。

SET_EXT_DATA_LINKEDプロシージャ

データベース・オブジェクトを拡張データリンク・アプリケーション共通オブジェクトに設定します。

SET_METADATA_LINKEDプロシージャ

データベース・オブジェクトをメタデータリンク・アプリケーション共通オブジェクトに設定します。

SET_PROFILE_EXPLICITプロシージャ

アプリケーション・コンテナでプロファイルをアプリケーション共通プロファイルとして設定します。

SET_ROLE_EXPLICITプロシージャ

アプリケーション・コンテナでロールをアプリケーション共通ロールとして設定します。

SET_USER_EXPLICITプロシージャ

このプロシージャは、アプリケーション・コンテナでローカル・ユーザーをアプリケーション共通ユーザーとして設定します。

116.3.1 CHECK_PLUG_COMPATIBILITYファンクション

このファンクションは、プラガブル・データベース(PDB)について記述されたXMLファイルを使用して、そのPDBを特定のマルチテナント・コンテナ・データベース(CDB)に接続できるかどうかを調べます。

構文

DBMS_PDB.CHECK_PLUG_COMPATIBILITY (
   pdb_descr_file    IN   VARCHAR2, 
   pdb_name          IN   VARCHAR2 DEFAULT NULL) 
 RETURN BOOLEAN;

パラメータ

表116-2 CHECK_PLUG_COMPATIBILITYプロシージャのパラメータ

パラメータ 説明

pdb_descr_file

PDBの記述を含むXMLファイルのパスです。

pdb_name

特定のCDBに接続された際に、pdb_descr_fileで表されるPDBに指定される名前です。指定されていない場合は、pdb_descr_fileから名前が抽出されます。

戻り値

pdb_descr_fileで説明されるPDBが特定のCDBと互換性がある場合はTRUEで、それ以外の場合はFALSEです。このファンクションがFALSEを戻す場合は、PDB_PLUG_IN_VIOLATIONSデータ・ディクショナリ・ビューを問い合わせて、検出されたエラーに関する情報を見つけてください。

参照:

PDB_PLUG_IN_VIOLATIONSビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

116.3.2 DESCRIBEプロシージャ

このプロシージャは、指定したプラガブル・データベース(PDB)が記述されたXMLファイルを生成します。このファイルをCHECK_PLUG_COMPATIBILITYファンクションに渡すと、XMLファイルに記述されたPDBを特定のマルチテナント・コンテナ・データベース(CDB)に接続できるかどうかを特定できます。

構文

DBMS_PDB.DESCRIBE (
   pdb_descr_file    IN   VARCHAR2, 
   pdb_name          IN   VARCHAR2 DEFAULT NULL);

パラメータ

表116-3 DESCRIBEプロシージャのパラメータ

パラメータ 説明

pdb_descr_file

PDBの記述を含むXMLファイルのパスです。

pdb_name

記述するPDBの名前です。リモート・データベースは @dblinkを含めることによって指定します。

使用上のノート

  • pdb_nameが省略された場合、セッションの接続先となるPDBが記述されます。

  • pdb_nameが省略され、セッションがルートに接続された場合、エラーが戻されます。

116.3.3 EXPORTRMANBACKUPプロシージャ

このプロシージャは、事前プラグイン・バックアップを使用できるように、アンプラグする前にプラガブル・データベースに属するRMANバックアップ情報を、そのディクショナリにエクスポートします。このプロシージャをコールする必要があるのは、非CDBをPDBに移行する場合のみです。PDBを再配置する場合は、このプロシージャをコールする必要はありません。

構文

DBMS_PDB.EXPORTRMANBACKUP (
   pdb_name     IN VARCHAR2  DEFAULT NULL);

パラメータ

表116-4 EXPORTRMANBACKUPプロシージャのパラメータ

パラメータ 説明

pdb_name

バックアップ情報をエクスポートする必要があるプラガブル・データベースの名前。

プラガブル・データベースまたは非CDBに接続している場合は、このパラメータを省略します。

使用上のノート

  • PDBがread/writeモードでオープンしている必要があります。

  • データベースが非CDBの場合は、pdb_nameを省略する必要があります。

  • pdb_nameが省略された場合、セッションが接続されているプラガブル・データベースがエクスポートされます。

  • pdb_nameが省略され、セッションがrootに接続された場合、エラーが戻されます。

116.3.4 RECOVERプロシージャ

このプロシージャは、プラガブル・データベースに属するデータファイルを使用することで、プラガブル・データベースについて説明するXMLファイルを生成します。これにより、このXMLファイルを使用して、CREATE PLUGGABLE DATABASE文を使用してプラガブル・データベースをマルチテナント・コンテナ・データベース(CDB)にプラグできます。

このプロシージャは、プラガブル・データベースを示すXMLファイルが破損または欠落している場合に使用します。

構文

DBMS_PDB.RECOVER (
   pdb_descr_file    IN   VARCHAR2, 
   pdb_name          IN   VARCHAR2,
   filenames         IN   VARCHAR2);

パラメータ

表116-5 RECOVERプロシージャのパラメータ

パラメータ 説明

pdb_descr_file

プラガブル・データベースの説明を含むXMLファイルのパスです。

pdb_name

プラガブル・データベースの名前です。

filenames

データファイル・パスのカンマ区切りリストまたはプラガブル・データベースのデータファイルを含むディレクトリ、あるいはその両方。

116.3.5 REMOVE_LINKプロシージャ

このプロシージャは、データベース・オブジェクトがアプリケーション共通オブジェクトではないことを指定します。アプリケーション・コンテナ内で、アプリケーション共通オブジェクトは複数のコンテナ間で共有されます。

構文

DBMS_PDB.REMOVE_LINK (
   schema_name  IN VARCHAR2, 
   object_name  IN VARCHAR2, 
   namespace    IN NUMBER, 
   edition_name IN VARCHAR2  DEFAULT NULL);

パラメータ

表116-6 REMOVE_LINKプロシージャのパラメータ

パラメータ 説明

schema_name

データベース・オブジェクトを所有するスキーマの名前。

object_name

データベース・オブジェクトの名前。

namespace

データベース・オブジェクトのネームスペース。

DBA_OBJECTSビューのNAMESPACE列にオブジェクトのネームスペースが表示されます。

edition_name

データベース・オブジェクトのエディションの名前。

参照:

アプリケーション・コンテナへのアプリケーションの移行の詳細は、『Oracle Database管理者ガイド』を参照してください。

116.3.6 SET_DATA_LINKEDプロシージャ

このプロシージャは、データベース・オブジェクトをデータリンク・アプリケーション共通オブジェクトに設定します。アプリケーション・コンテナ内で、データリンク・アプリケーション共通オブジェクトはアプリケーション・ルートのみにデータを格納し、格納されたデータにはそのアプリケーション・コンテナ内のすべてのアプリケーションPDBからアクセスできます。データリンク・アプリケーション共通オブジェクトのデータは、アプリケーション・ルートでのみ変更できます。

このプロシージャを使用して、PDBにインストールされているアプリケーションをアプリケーション・コンテナに移行するときに、データリンク・アプリケーション共通オブジェクトを設定できます。アプリケーションは、アプリケーション・ルートまたはアプリケーションPDBに移行できます。たとえば、Oracle Database 12cリリース1 (12.1) CDBに接続中のPDBにインストールされているアプリケーションを、Oracle Database 12cリリース2 (12.2) CDBのアプリケーション・コンテナに移行できます。

構文

DBMS_PDB.SET_DATA_LINKED (
   schema_name  IN VARCHAR2, 
   object_name  IN VARCHAR2, 
   namespace    IN NUMBER, 
   edition_name IN VARCHAR2  DEFAULT NULL);

パラメータ

表116-7 SET_DATA_LINKEDプロシージャのパラメータ

パラメータ 説明

schema_name

データベース・オブジェクトを所有するスキーマの名前。

object_name

データベース・オブジェクトの名前。

namespace

データベース・オブジェクトのネームスペース。

DBA_OBJECTSビューのNAMESPACE列にオブジェクトのネームスペースが表示されます。

edition_name

データベース・オブジェクトのエディションの名前。

参照:

アプリケーション・コンテナへのアプリケーションの移行の詳細は、『Oracle Database管理者ガイド』を参照してください。

116.3.7 SET_EXT_DATA_LINKEDプロシージャ

このプロシージャは、データベース・オブジェクトを拡張データリンク・アプリケーション共通オブジェクトに設定します。拡張データリンク・オブジェクトの場合、アプリケーション・コンテナ内の各アプリケーションPDBは、アプリケーション・ルートの共通データを共有しながら特定の独自データを作成できます。したがって、アプリケーション・ルートに格納されるデータのみがすべてのアプリケーションPDBに共通です。

このプロシージャを使用して、PDBにインストールされているアプリケーションをアプリケーション・コンテナに移行するときに、拡張データリンク・アプリケーション共通オブジェクトを設定できます。アプリケーションは、アプリケーション・ルートまたはアプリケーションPDBに移行できます。たとえば、Oracle Database 12cリリース1 (12.1) CDBに接続中のPDBにインストールされているアプリケーションを、Oracle Database 12cリリース2 (12.2) CDBのアプリケーション・コンテナに移行できます。

構文

DBMS_PDB.SET_EXT_DATA_LINKED (
   schema_name  IN VARCHAR2, 
   object_name  IN VARCHAR2, 
   namespace    IN NUMBER, 
   edition_name IN VARCHAR2  DEFAULT NULL);

パラメータ

表116-8 SET_EXT_DATA_LINKEDプロシージャのパラメータ

パラメータ 説明

schema_name

データベース・オブジェクトを所有するスキーマの名前。

object_name

データベース・オブジェクトの名前。

namespace

データベース・オブジェクトのネームスペース。

DBA_OBJECTSビューのNAMESPACE列にオブジェクトのネームスペースが表示されます。

edition_name

データベース・オブジェクトのエディションの名前。

参照:

アプリケーション・コンテナへのアプリケーションの移行の詳細は、『Oracle Database管理者ガイド』を参照してください。

116.3.8 SET_METADATA_LINKEDプロシージャ

このプロシージャは、データベース・オブジェクトをメタデータリンク・アプリケーション共通オブジェクトに設定します。アプリケーション・コンテナ内で、メタデータリンク・アプリケーション共通オブジェクトは、表などの特定のオブジェクトのメタデータを格納するため、アプリケーション共通オブジェクトを共有するコンテナは同じ構造を持ちますが、データは異なります。

このプロシージャを使用して、PDBにインストールされているアプリケーションをアプリケーション・コンテナに移行するときに、メタデータリンク・アプリケーション共通オブジェクトを設定できます。アプリケーションは、アプリケーション・ルートまたはアプリケーションPDBに移行できます。たとえば、Oracle Database 12cリリース1 (12.1) CDBに接続中のPDBにインストールされているアプリケーションを、Oracle Database 12cリリース2 (12.2) CDBのアプリケーション・コンテナに移行できます。

構文

DBMS_PDB.SET_METADATA_LINKED (
   schema_name  IN VARCHAR2, 
   object_name  IN VARCHAR2, 
   namespace    IN NUMBER, 
   edition_name IN VARCHAR2  DEFAULT NULL);

パラメータ

表116-9 SET_METADATA_LINKEDプロシージャのパラメータ

パラメータ 説明

schema_name

データベース・オブジェクトを所有するスキーマの名前。

object_name

データベース・オブジェクトの名前。

namespace

データベース・オブジェクトのネームスペース。

DBA_OBJECTSビューのNAMESPACE列にオブジェクトのネームスペースが表示されます。

edition_name

データベース・オブジェクトのエディションの名前。

参照:

アプリケーション・コンテナへのアプリケーションの移行の詳細は、『Oracle Database管理者ガイド』を参照してください。

116.3.9 SET_PROFILE_EXPLICITプロシージャ

このプロシージャは、アプリケーション・コンテナでプロファイルをアプリケーション共通プロファイルとして設定します。このプロシージャは、以前のリリースのプロファイルを現行リリースのアプリケーション・コンテナに移行することを目的としています。

アプリケーション・ルートでアプリケーションのインストール、パッチ適用、アップグレードまたはアンインストール操作を実行するときに、このプロシージャを起動する必要があります。

構文

DBMS_PDB.SET_PROFILE_EXPLICIT (
   profile_name IN VARCHAR2);

パラメータ

表116-10 SET_PROFILE_EXPLICITプロシージャのパラメータ

パラメータ 説明

profile_name

プロファイルの名前。

参照:

アプリケーション・コンテナへのアプリケーションの移行の詳細は、『Oracle Database管理者ガイド』を参照してください。

116.3.10 SET_ROLE_EXPLICITプロシージャ

このプロシージャは、アプリケーション・コンテナでロールをアプリケーション共通ロールとして設定します。このプロシージャは、以前のリリースのロールを現行リリースのアプリケーション・コンテナに移行することを目的としています。

アプリケーション・ルートでアプリケーションのインストール、パッチ適用、アップグレードまたはアンインストール操作を実行するときに、このプロシージャを起動する必要があります。

構文

DBMS_PDB.SET_ROLE_EXPLICIT (
   role_name IN VARCHAR2);

パラメータ

表116-11 SET_ROLE_EXPLICITプロシージャのパラメータ

パラメータ 説明

role_name

ロールの名前。

参照:

アプリケーション・コンテナへのアプリケーションの移行の詳細は、『Oracle Database管理者ガイド』を参照してください。

116.3.11 SET_USER_EXPLICITプロシージャ

このプロシージャは、アプリケーション・コンテナでローカル・ユーザーをアプリケーション共通ユーザーとして設定します。

アプリケーション・ルートでアプリケーションのインストール、パッチ適用、アップグレードまたはアンインストール操作を実行するときに、このプロシージャを起動する必要があります。

構文

DBMS_PDB.SET_USER_EXPLICIT (
   user_name IN VARCHAR2);

パラメータ

表116-12 SET_USER_EXPLICITプロシージャのパラメータ

パラメータ 説明

user_name

ユーザー名。

参照:

アプリケーション・コンテナへのアプリケーションの移行の詳細は、『Oracle Database管理者ガイド』を参照してください。