ALTER PLUGGABLE DATABASE

目的

ALTER PLUGGABLE DATABASE文を使用すると、プラガブル・データベース(PDB)を変更できます。PDBには、従来のPDB、アプリケーション・コンテナまたはアプリケーションPDBを指定できます。

この句で実行できるタスクは、次のとおりです。

  • PDBをマルチテナント・コンテナ・データベース(CDB)から切断する(pdb_unplug_clauseを使用)。

  • PDBの設定を変更する(pdb_settings_clausesを使用)。

  • PDBデータファイルをオンラインまたはオフラインにする(pdb_datafile_clauseを使用)。

  • PDBをバックアップおよびリカバリする(pdb_recovery_clausesを使用)。

  • PDBの状態を変更する(pdb_change_state句を使用)。

  • CDB内の複数のPDBの状態を変更する(pdb_change_state_from_root句を使用)。

  • アプリケーション・コンテナでアプリケーションに対して操作を実行する(application_clausesを使用)。

  • snapshot_clausesを使用してPDBのスナップショットを作成および管理する。

ノート:

PDBに接続して、対応するALTER DATABASE文を実行することにより、すべてのALTER PLUGGABLE DATABASEタスクを実行できます。この機能は、CDBに移行したアプリケーションの下位互換性を維持するために用意されています。例外はPDBストレージの限度の変更です。これには、ALTER PLUGGABLE DATABASEのpdb_storage_clauseを使用する必要があります。

関連項目:

PDBの作成の詳細は、「CREATE PLUGGABLE DATABASE」を参照してください。

前提条件

CDBに接続している必要があります。

pdb_unplug_clauseを指定するには、現在のコンテナがルートまたはアプリケーション・ルートである必要があります。また、AS SYSDBAまたはAS SYSOPERとして認証される必要があるとともに、SYSDBAまたはSYSOPER権限(共通に付与されている権限か、ルートと切断対象のPDBのそれぞれでローカルに付与されている権限のいずれか)が必要です。

pdb_settings_clausesを指定するには、現在のコンテナが設定の変更対象のPDBである必要があります。また、ALTER DATABASE権限(共通に付与されている権限か、そのPDBでローカルに付与されている権限のいずれか)が必要です。pdb_logging_clausesまたはRENAME GLOBAL_NAME句を指定するには、RESTRICTED SESSION権限(共通に付与されている権限か、名前を変更するPDBでローカルに付与されている権限のいずれか)も必要です。PDBはREAD WRITE RESTRICTEDモードである必要があります。

pdb_datafile_clauseを指定するには、現在のコンテナが、データファイルをオンラインまたはオフラインにするPDBである必要があり、ALTER DATABASE権限(共通に付与されている権限か、そのPDBでローカルに付与されている権限のいずれか)が必要です。

pdb_recovery_clausesを指定するには、現在のコンテナがバックアップまたはリカバリの実行対象のPDBである必要があります。また、ALTER DATABASE権限(共通に付与されている権限か、そのPDBでローカルに付与されている権限のいずれか)が必要です。

pdb_change_state句を指定するには、現在のコンテナが状態の変更対象のPDBである必要があります。また、AS SYSBACKUP、AS SYSDBA、AS SYSDGまたはAS SYSOPERとして認証される必要があります。

pdb_change_state_from_root句を指定するには、現在のコンテナがルートまたはアプリケーション・ルートである必要があります。また、AS SYSBACKUP、AS SYSDBA、AS SYSDGまたはAS SYSOPERとして認証される必要があるとともに、SYSBACKUP、SYSDBA、SYSDGまたはSYSOPER権限(共通に付与されている権限か、ルートまたはアプリケーション・ルートと状態の変更対象のPDBのそれぞれでローカルに付与されている権限のいずれか)が必要です。

application_clausesを指定するには、現在のコンテナがアプリケーション・コンテナである必要があります。また、AS SYSBACKUPまたはAS SYSDBAとして認証される必要があるとともに、SYSBACKUPまたはSYSDBA権限(共通に付与されている権限か、アプリケーション・ルートとアプリケーション操作を実行するアプリケーションPDBのそれぞれでローカルに付与されている権限のいずれか)が必要です。

構文

database_clause::=

pdb_unplug_clause::=

pdb_unplug_encrypt::=

pdb_logging_clauses::=

logging_clause::=

pdb_force_logging_clause::=

pdb_refresh_mode_clause::=

pdb_refresh_switchover_clause ::=

pdb_datafile_clause::=

pdb_general_recovery::=

instances_clause::=

relocate_clause::=

pdb_save_or_discard_state::=

application_clauses::=

snapshot_clauses ::=

pdb_snapshot_clause ::=

materialize_clause::=

create_snapshot_clause::=

drop_snapshot_clause::=

prepare_clause::=

lost_write_protection ::=

ALTER PLUGGABLE DATABASE文でのlost_write_protection句の使用方法は、ALTER DATABASE文と同じです。構文の詳細は、ALTER DATABASEを参照してください。

セマンティクス

database_clause

コンテナ・データベースのPLUGGABLE DATABASEオプションを指定します。

pdb_name

変更するデータベースの名前を指定します。db_nameを省略した場合は、初期化パラメータDB_NAMEの値によって特定されたデータベースが変更されます。なお、データベースの制御ファイルが初期化パラメータCONTROL_FILESに指定されている場合にのみ、そのデータベースを変更できます。データベース識別子は、Oracle Netのデータベース指定とは関係ありません。

pdb_unplug_clause

この句を使用すると、CDBからPDBを切断できます。PDBを切断すると、PDBに関する情報がオペレーティング・システム上のファイルに保存されます。その後、このファイルを使用して、PDBをCDBに接続できます。

pdb_nameには、切断するPDBの名前を指定します。PDBはクローズされている必要があります。つまり、オープン・モードは、MOUNTEDである必要があります。Oracle Real Application Clusters(Oracle RAC)環境では、すべてのOracle RACインスタンスでそのPDBがクローズされている必要があります。

filenameには、PDBの情報を保存するオペレーティング・システム・ファイルのフルパス名を指定します。指定するファイル名によって、保存される情報のタイプおよび保存方法が決まります。

  • 拡張子.xmlで終わるファイル名を指定すると、PDBに関するメタデータを含むXMLファイルが作成されます。その後、XMLファイルとPDBのデータファイルを新しい場所にコピーして、PDBをCDBに接続する際にXMLファイル名を指定します。この場合、PDBのデータファイルを別個にコピーする必要があります。

  • 拡張子.pdbで終わるファイル名を指定すると、.pdbアーカイブ・ファイルが作成されます。これは、PDBに関するメタデータを含むXMLファイルとPDBのデータファイルを含む、圧縮されたファイルです。その後、この単一のアーカイブ・ファイルを新しい場所にコピーして、PDBをCDBに接続する際にアーカイブ・ファイル名を指定します。これにより、PDBのデータファイルを別個にコピーする必要がなくなります。PDBの接続時に.pdbアーカイブ・ファイルを使用する場合、このファイルはPDBの接続時に抽出され、PDBのファイルは.pdbアーカイブ・ファイルと同じディレクトリに配置されます。

切断後、そのPDBは、オープン・モードMOUNTED、ステータスUNPLUGGEDとしてCDBに留まります。切断されたPDBに対して実行できる操作は、DROP PLUGGABLE DATABASEのみです。この操作により、PDBはCDBから削除されます。同じCDBまたは別のCDBにPDBを接続するには、先にそのPDBを削除する必要があります。

関連項目:

pdb_unplug_encrypt

このコマンドを実行するにはSYSKM権限が必要です。

統合PDB

  • ENCRYPT USING transport_secretはオプションです。

  • TDEが使用されている場合は、この句を指定する必要があります。TDEが使用されていない場合、この文によってエラーORA-46680:master keys of the container database must be exportedがスローされます。

  • TDEが使用されている場合、ウォレットがROOTでオープンしている必要があります。

  • キーは、指定されたtransport secretを使用して暗号化され、.XMLファイルまたはアーカイブ・ファイルにエクスポートされます。

XMLメタデータ・ファイルへのPDBの切断: 例

ALTER PLUGGABLE DATABASE CDB1_PDB2 UNPLUG INTO '/tmp/cdb1_pdb2.xml' ENCRYPT USING transport_secret

アーカイブ・ファイルへのPDBの切断: 例

ALTER PLUGGABLE DATABASE CDB1_PDB1_1 UNPLUG INTO '/tmp/CDB1_PDB1_1.pdb' ENCRYPT USING transport_secret

分離モードのPDBの場合、ENCRYPT USING transport_secretを指定する必要はありません。PDBのウォレット・ファイルはXMLファイルからのプラガブル・データベースの作成時にコピーされるため、これは必須ではありません。アーカイブ・ファイルとしてPDBを切断する場合、PDBのウォレット・ファイルは、.pdb拡張子を持つ圧縮アーカイブに追加されます。

ewallet.p12ファイルがすでに宛先に存在している場合、バックアップが自動的に開始されます。バックアップ・ファイルの形式はewallet_PLGDB_2017090517455564.p12です。

pdb_settings_clauses

これらの句を使用すると、PDBの様々な設定を変更できます。

pdb_name

オプションでpdb_nameを使用して、設定を変更するPDBの名前を指定できます。

DEFAULT EDITION句

この句を使用すると、指定したエディションをPDBのデフォルト・エディションとして設定できます。この句のセマンティクスの詳細は、「ALTER DATABASE」の「DEFAULT EDITION句」を参照してください。

SET DEFAULT TABLESPACE句

この句を使用すると、以降にPDBで作成する表領域のデフォルト・タイプを指定または変更できます。この句のセマンティクスの詳細は、「ALTER DATABASE」の「SET DEFAULT TABLESPACE句」を参照してください。

DEFAULT TABLESPACE句

この句を使用すると、PDBのデフォルトの永続表領域を構築または変更できます。この句のセマンティクスの詳細は、「ALTER DATABASE」の「DEFAULT TABLESPACE句」を参照してください。

DEFAULT TEMPORARY TABLESPACE句

この句を使用すると、PDBのデフォルトの一時表領域を、新しい表領域または表領域グループに変更できます。この句のセマンティクスの詳細は、「ALTER DATABASE」の「DEFAULT [LOCAL] TEMPORARY TABLESPACE句」を参照してください。

RENAME GLOBAL_NAME TO句

この句を使用して、PDBのグローバル名を変更できます。新しいグローバル名は、CDB内で一意にする必要があります。Oracle Real Application Clusters(Oracle RAC)データベースの場合は、PDBを現在のインスタンスのみでREAD WRITE RESTRICTEDモードで開く必要があります。その他すべてのインスタンスでは、PDBをクローズする必要があります。この句のセマンティクスの詳細は、「ALTER DATABASE」の「RENAME GLOBAL_NAME句」を参照してください。

ノート:

PDBのグローバル名を変更するときには必ず、そのPDBへの接続に使用しているデータベース・サービスのPLUGGABLE DATABASEプロパティを変更してください。

set_time_zone_clauses

この句を使用すると、PDBのタイムゾーン設定を変更できます。この句のセマンティクスの詳細は、ALTER DATABASEのset_time_zone_clauseを参照してください。

database_file_clauses

この句を使用すると、PDBのデータファイルと一時ファイルを変更できます。この句のセマンティクスの詳細は、ALTER DATABASEのdatabase_file_clausesを参照してください。

supplemental_db_logging

これらの句を使用すると、PDBのログ・ストリームへのサプリメンタル・データを追加する(または追加を停止する)ようにOracle Databaseに指示できます。

  • ADD SUPPLEMENTAL LOG句を指定すると、PDBのログ・ストリームにサプリメンタル・データを追加できます。この句を発行するには、ALTER DATABASE ... ADD SUPPLEMENTAL LOG ...文を使用してCDBルートのサプリメンタル・ロギングを有効にする必要があります。PDBに指定するサプリメンタル・ロギングのレベルは、CDBルートのログと一致する必要はありません。つまり、CDBルートのサプリメンタル・ロギングを有効にするときに指定された句に関係なく、PDBに句DATA、supplemental_id_key_clause、またはsupplemental_plsql_clauseのいずれかを指定できます。

  • DROP SUPPLEMENTAL LOG句を指定すると、PDBのログ・ストリームへのサプリメンタル・データの追加を停止できます。

この句のセマンティクスの詳細は、ALTER DATABASEのsupplemental_db_loggingを参照してください。

pdb_storage_clause

この句を使用して、PDBのストレージ制限を変更できます。

この句のセマンティクスは、CREATE PLUGGABLE DATABASEのpdb_storage_clauseと同じですが、次が追加されます。

  • MAXSIZE size_clauseを指定する場合は、size_clauseに、PDBの既存の表領域の合計サイズ以上の値を指定する必要があります。それ以外の場合はエラーが発生します。

  • MAX_AUDIT_SIZE size_clauseを指定する場合、size_clauseに指定する値は、PDBで既存のあふれた統合監査OSファイル(.bin形式)で使用される記憶域の容量以上である必要があります。それ以外の場合はエラーが発生します。

  • MAX_DIAG_SIZE size_clauseを指定する場合、size_clauseに指定する値は、PDBにより現在使用されている自動診断リポジトリ(ADR)での診断用の記憶域の容量以上である必要があります。そうでない場合はエラーが発生します。

pdb_logging_clauses

この句を使用すると、PDBのロギング特性を設定または変更できます。

logging_clause

この句を使用して、PDB内で以降に作成する表領域のデフォルトのロギング属性を変更します。この句のセマンティクスは、CREATE PLUGGABLE DATABASEのlogging_clauseと同じです。

pdb_force_logging_clause

この句を使用すると、PDBを4つのロギング・モードのいずれかに設定したり、そのモードから戻したりできます。

強制ロギング・モードでは、一時表領域および一時セグメントの変更を除くPDBのすべての変更の記録をデータベースに指示します。強制ロギングなしモードでは、PDBの変更を記録しないようデータベースに指示します。

STANDBY NOLOGGINGは、ロギングなしで実行できる操作をログに記録しないようにデータベースに対して指示します。データベースは、操作によって作成されたデータ・ブロックをData Guard構成内の資格を持つ各スタンバイ・データベースに送信します。これにより、通常、それらのスタンバイに無効なブロックがなくなります。

CDB全体の強制ロギング・モードは、他のどの設定より優先されます。PDBレベルの強制ロギング・モードおよび強制ロギングなしモードは、PDBの個々の表領域に指定するLOGGING、NOLOGGINGまたはFORCE LOGGING設定あるいはPDBの個々のデータベース・オブジェクトに指定するLOGGINGまたはNOLOGGING設定よりも優先され、これらの設定には影響されません。

  • ENABLE FORCE LOGGINGを指定して、強制ロギング・モードのPDBを配置します。PDBが現在強制ロギングなしモードである場合、この句を指定するとエラーになります。最初にDISABLE FORCE NOLOGGINGを指定する必要があります。

  • DISABLE FORCE LOGGINGを指定して、PDBの強制ロギング・モードを解除します。PDBが現在強制ロギング・モードでない場合、この句を指定するとエラーになります。

  • ENABLE FORCE NOLOGGINGを指定して、強制ロギングなしモードのPDBを配置します。PDBが現在強制ロギング・モードである場合、この句を指定するとエラーになります。最初にDISABLE FORCE LOGGINGを指定する必要があります。ログに記録されない操作では、CDBにスタンバイ・ロギングなしモードが設定されている場合でも、従来の無効化REDOが使用されます。

  • DISABLE FORCE NOLOGGINGを指定して、PDBの強制ロギングなしモードを解除します。PDBが現在強制ロギングなしモードでない場合、この句を指定するとエラーになります。

  • PDBをロード・パフォーマンスのスタンバイ・ロギングなしモードにするには、SET STANDBY NOLOGGING FOR LOAD PERFORMANCEを指定します。このモードでは、ロード・プロセスの速度が低下しない場合には、ログに記録されないタスクの一部としてロードされたデータは、プライベート・ネットワーク接続を介して資格のあるスタンバイに送信されます。低下する場合には、データは送信されず、各スタンバイで無効化REDOが発生するとプライマリから自動的にフェッチされ、データ・ブロックが受信されるまで再試行されます。

  • PDBをデータ可用性のスタンバイ・ロギングなしモードにするには、SET STANDBY NOLOGGING FOR DATA AVAILABILITYを指定します。このモードでは、ログに記録されないタスクの一部としてロードされたデータは、ネットワーク接続を介して、またはネットワーク接続が失敗する場合にはREDO内のブロック・イメージを介して、資格のあるスタンバイに送信されます。つまり、このモードでは、ネットワーク接続または関連するプロセスによってプライベート・ネットワーク接続を介したデータの送信が妨げられる場合には、ロードはログに記録する方法で行うように切り替わります。

スタンバイ・ロギングなしモードの場合、資格のあるスタンバイは、読取りのためにオープンされ、管理リカバリを実行しており、スタンバイREDOログでREDOを受信しているスタンバイです。

この句は、logging_clauseで指定されたPDBのデフォルトのLOGGINGまたはNOLOGGINGモードを変更しません。

pdb_refresh_mode_clause

この句を使用して、PDBのリフレッシュ・モードを変更します。この句は、リフレッシュ可能なPDB、つまり現在のリフレッシュ・モードがMANUALまたはEVERY refresh_interval MINUTESまたはHOURSのPDBに対してのみ指定できます。PDBは、手動リフレッシュから自動リフレッシュに、または自動リフレッシュから手動リフレッシュに切り替えることができます。この句を使用して、自動リフレッシュの間隔(分単位)を変更することもできます。PDBを手動リフレッシュまたは自動リフレッシュからリフレッシュなしに切り替えることはできますが、リフレッシュ可能でないPDBで手動リフレッシュまたは自動リフレッシュを有効にすることはできません。この句のセマンティックスの詳細は、CREATE PLUGGABLE DATABASEのドキュメントの「pdb_refresh_mode_clause」を参照してください。

REFRESH

この句を指定すると、リフレッシュ可能なPDB、つまり現在のリフレッシュ・モードがMANUALまたはEVERY number MINUTESのPDBの手動リフレッシュを実行できます。PDBはクローズされている必要があります。リフレッシュ可能なPDBの詳細は、「CREATE PLUGGABLE DATABASE」の「pdb_refresh_mode_clause」を参照してください。

pdb_refresh_switchover_clause

この句を使用して、リフレッシュ可能なクローンPDBとプライマリPDBの間でロールを逆にします。この句により、リフレッシュ可能なクローンPDBは、読み書き両用モードでオープンできるプライマリPDBになります。元のプライマリPDBはリフレッシュ可能なクローンになります。

  • このコマンドは、プライマリPDBから実行する必要があります。

  • この文を発行するときに、REFRESH MODE NONEは指定できません。

  • dblinkは、リフレッシュ可能なクローンPDBが現在置かれているCDBのルートを指す必要があります。

  • この操作の後、現在のPDBはリフレッシュ可能なクローンになり、読取り専用モードでのみオープンできるようになります。

  • リフレッシュ可能なクローンが別のCDB内に存在している場合、データベース・リンク・ユーザーはプライマリPDBに存在している必要があります。

SET CONTAINER_MAP

この句を使用すると、アプリケーション・コンテナのCONTAINER_MAPデータベース・プロパティを指定できます。現在のコンテナはアプリケーション・ルートである必要があります。map_objectの形式は[schema.]tableです。schemaには、tableを含むスキーマを指定します。schemaを指定しない場合、表は自分のスキーマ内にあるとみなされます。tableには、レンジ、リストまたはハッシュ・パーティション化された表を指定します。

CONTAINERS DEFAULT TARGET

この句を使用すると、アプリケーション・コンテナ内のDML文のデフォルト・コンテナを指定できます。アプリケーション・ルートに接続している必要があります。

  • container_nameには、デフォルト・コンテナの名前を指定します。デフォルト・コンテナには、アプリケーション・ルートまたはアプリケーションPDBを含む、アプリケーション・コンテナ内の任意のコンテナを指定できます。指定できるデフォルト・コンテナは1つのみです。

  • NONEを指定した場合は、デフォルト・コンテナはCDBルートです。これはデフォルトです。

WHERE句でコンテナを指定せずにDML文がアプリケーション・ルートで発行されている場合、DML文はアプリケーション・コンテナのデフォルト・コンテナに影響します。

CONTAINERS HOSTおよびPORT

プロキシPDBから参照するPDBを作成する場合は、HOST句およびPORT句を使用します。このタイプのPDBは、参照先PDBと呼ばれます。

次の文はPDB内で実行できます。

ALTER PLUGGABLE DATABASE CONTAINERS HOST='myhost.example.com';
ALTER PLUGGABLE DATABASE CONTAINERS PORT=1599;

制限事項:

次の文は許可されていません:

ALTER PLUGGABLE DATABASE <pdb_name> CONTAINERS HOST='myhost.example.com';
ALTER PLUGGABLE DATABASE <pdb_name> CONTAINERS PORT=1599;

pdb_datafile_clause

この句を使用して、PDBに関連付けられたデータファイルをオンラインまたはオフラインにできます。この句を発行するときには、そのPDBがクローズされている必要があります。

  • pdb_nameには、PDBの名前を指定します。現在のコンテナがそのPDBである場合は、pdb_nameは省略できます。

  • DATAFILE句では、オンラインまたはオフラインにするデータファイルを指定できます。filenameまたはfilenumberを使用して、特定のデータファイルを名前または番号によって識別します。V$DATAFILE動的パフォーマンス・ビューのNAME列とFILE#列の問合せを実行することによって、データファイルの名前と番号を表示できます。そのPDBに関連付けられたすべてのデータファイルを指定するには、ALLを使用します。

  • データファイルをオンラインにする場合はONLINEを指定し、データファイルをオフラインにする場合はOFFLINEを指定します。

pdb_recovery_clauses

pdb_recovery_clausesを使用して、PDBをバックアップおよびリカバリできます。

pdb_name

オプションでpdb_nameを使用して、バックアップまたはリカバリするPDBの名前を指定できます。

pdb_general_recovery

この句を指定すると、PDB、スタンバイ・データベース、または指定した表領域やファイルのメディア・リカバリを制御できます。pdb_general_recovery句は、ALTER DATABASEのgeneral_recovery句と同じセマンティクスを持ちます。詳細は、ALTER DATABASEのgeneral_recovery句を参照してください。

BACKUP句

この句を使用すると、PDB内のすべてのデータファイルをオンライン・バックアップ・モード(ホット・バックアップ・モードともいう)にしたり、このモードから戻すことができます。これらの句についてのセマンティクスは、ALTER PLUGGABLE DATABASEおよびALTER DATABASEと同じです。詳細は、「ALTER DATABASE」の「BACKUP句」を参照してください。

RECOVERY句

これらの句を使用して、リカバリのPDBを有効化または無効化します。PDBはクローズされている必要があります。つまり、オープン・モードは、MOUNTEDである必要があります。

  • ENABLE RECOVERYを指定して、PDBに属するすべてのデータファイルをオンラインにし、リカバリのPDBを有効化します。

  • DISABLE RECOVERYを指定して、PDBに属するすべてのデータファイルをオフラインにし、リカバリのPDBを無効化します。

関連項目:

RECOVERY句の詳細は、『Oracle Data Guard概要および管理』を参照してください。

pdb_change_state

この句を使用すると、PDBの状態またはオープン・モードを変更できます。表11-2は、PDBのオープン・モードを示しています。

  • オープン・モードをREAD WRITE、READ ONLYまたはMIGRATEに変更するには、pdb_open句を指定します。

  • オープン・モードをMOUNTEDに変更するには、pdb_close句を指定します。

表11-2 PDBのオープン・モード

オープン・モード 説明

READ WRITE

読取り/書込みオープン・モードのPDBでは、問合せおよびユーザー・トランザクションを実行でき、ユーザーはREDOログを生成できます。

READ ONLY

読取り専用オープン・モードのPDBでは、問合せは実行できますが、ユーザー変更を実行することはできません。

MIGRATE

PDBが移行オープン・モードの場合は、PDBでデータベース・アップグレード・スクリプトを実行できます。

MOUNTED

PDBは、マウント・モードでは、マウント・モードの非CDBと同じように動作します。どのオブジェクトの変更も行えず、またデータベース管理者のみがアクセス可能です。データファイルからの読取りも、データファイルへの書込みもできません。PDBに関する情報は、メモリー・キャッシュから削除されます。PDBのコールド・バックアップを実行できます。

V$PDBSビューのOPEN_MODE列を問い合せて、PDBのオープン・モードを表示できます。

関連項目:

PDBのオープン・モードの詳細は、『Oracle Database管理者ガイド』を参照してください。

pdb_name

オプションでpdb_nameを使用して、オープン・モードを変更するPDBの名前を指定できます。

pdb_open

この句を使用して、PDBのオープン・モードをREAD WRITE、READ ONLYまたはMIGRATEに変更できます。この句を指定するときにFORCEキーワードを指定しない場合は、そのPDBがMOUNTEDモードになっている必要があります。

READ WRITEまたはREAD ONLYを指定しない場合は、デフォルトでREAD WRITEが設定されます。例外は、そのPDBが、フィジカル・スタンバイ・データベースとして使用されるCDBに属している場合です。この場合、デフォルトはREAD ONLYになります。

READ WRITE

この句を指定すると、オープン・モードをREAD WRITEに変更できます。

READ ONLY

この句を指定すると、オープン・モードをREAD ONLYに変更できます。

[READ WRITE] UPGRADE

この句を指定すると、オープン・モードをMIGRATEに変更できます。READ WRITEキーワードはオプションであり、意味を明確にするためのものです。

RESTRICTED

オプションのRESTRICTEDキーワードを指定すると、PDBへのアクセスはPDB内でRESTRICTED SESSION権限を持つユーザーに限られます。

PDBがREAD WRITEまたはREAD ONLYモードにあるときに、RESTRICTEDキーワードとFORCEキーワードを指定してオープン・モードの変更を実行すると、そのPDBに接続しているセッションのうち、そのPDBにおけるRESTRICTED SESSION権限を持っていないすべてのセッションが終了され、ロールバックされます。

FORCE

このキーワードを指定すると、PDBのオープン・モードをREAD WRITEからREAD ONLYに、またはREAD ONLYからREAD WRITEに変更できます。FORCEキーワードを使用すると、オープン・モードの変更中にユーザーがPDBへの接続を維持できます。

READ WRITEからREAD ONLYへのPDBのオープン・モードの変更でFORCEを指定すると、オープン・モードの変更時にオープンになっているあらゆるREAD WRITEトランザクションが、DML操作をそれ以上実行できなくなり、またCOMMITもできなくなります。

FORCEの制限事項

PDBが現在MIGRATEモードにある場合は、FORCEキーワードは指定できません。また、現在オープン状態になっているPDBをMIGRATEモードに変更する際には、FORCEキーワードは指定できません。

RESETLOGS

この句を指定すると、新しいPDBインカネーションを作成し、PDBのポイント・イン・タイム・リカバリ後に、そのPDBをREAD WRITEモードでオープンできます。

関連項目:

CDBおよびPDBのPoint-in-Timeリカバリの実行の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

instances_clause

Oracle Real Application Clusters環境でこの句を使用すると、指定されたOracle RACインスタンス内のPDBの状態を変更できます。この句を省略すると、PDBの状態は現在のインスタンス内のみで変更されます。

  • instance_nameを使用して、1つ以上のインスタンス名のカンマ区切りのリストをかっこで囲んで指定します。これにより、それらのインスタンスのみPDBの状態が変更されます。

  • Specify ALLを指定すると、すべてのインスタンス内のPDBの状態を変更できます。

  • ALL EXCEPTを指定すると、指定されたインスタンスを除くすべてのインスタンス内のPDBの状態を変更できます。

PDBが1つ以上のインスタンス内ですでにオープンされている場合、別のインスタンス内でもオープンできますが、すでにオープンされているPDBと同じモードでオープンする必要があります。

pdb_close

この句を使用すると、PDBのオープン・モードをMOUNTEDに変更できます。この句を指定するときには、そのPDBがREAD WRITE、READ ONLYまたはMIGRATEモードにある必要があります。この句は、PDBでのSQL*Plus SHUTDOWNコマンドに相当します。

IMMEDIATE

オプションのIMMEDIATEキーワードを指定した場合、この句は、PDBでの即時モードのSQL*Plus SHUTDOWNコマンドに相当します。それ以外の場合、PDBは通常モードでシャットダウンされます。

関連項目:

SQL*Plus SHUTDOWNコマンドの詳細は、『SQL*Plusユーザーズ・ガイドおよびリファレンス』を参照してください。

ABORT

PDBを強制的に停止するには、ABORTを指定します。

instances_clause

Oracle Real Application Clusters環境でこの句を使用すると、指定されたOracle RACインスタンス内のPDBの状態を変更できます。PDBは、いくつかのインスタンスでクローズし、別のインスタンスでオープンしておくことができます。この句のセマンティクスの詳細は、instances_clauseを参照してください。

relocate_clause

Oracle Real Application Clusters環境では、この句を使用して、異なるOracle RACインスタンス上でPDBを再オープンするようにデータベースに指示できます。

  • Oracle Databaseで選択された別のインスタンス上のPDBを再オープンするには、RELOCATEを指定します。

  • 指定されたインスタンス内でPDBを再オープンするには、RELOCATE TO 'instance_name'を指定します。

  • 現在のインスタンス内でPDBをクローズするには、NORELOCATEを指定します。これはデフォルトです。

pdb_save_or_discard_state

この句を使用して、CDBの再起動時にPDBのオープン・モードを保存または破棄するようデータベースに指示します。

  • SAVEを指定する場合、CDBの再起動後のPDBのオープン・モードは、CDBの再起動前のオープン・モードと同じです。

  • DISCARDを指定する場合、CDBの再起動後のPDBのオープン・モードはMOUNTEDになります。これはデフォルトです。

instances_clause

Oracle Real Application Clusters環境でこの句を使用して、指定されたOracle RACインスタンス内のPDBのオープン・モードを保存または破棄するようデータベースに指示します。この句を省略すると、データベースはSAVEまたはDISCARD設定を現在のインスタンスのPDBにのみ適用します。

  • instance_nameを使用して、1つ以上のインスタンス名のカンマ区切りのリストをかっこで囲んで指定します。これにより、SAVEまたはDISCARD設定がそれらのインスタンスのPDBにのみ適用されます。

  • ALLを指定して、SAVEまたはDISCARD設定をすべてのインスタンスのPDBに適用します。

  • ALL EXCEPTを指定して、SAVEまたはDISCARD設定を指定されたインスタンスを除くすべてのインスタンスのPDBに適用します。

pdb_change_state_from_root

この句を使用して、1つ以上のPDBの状態を変更できます。

  • 状態を変更する1つ以上のPDBのpdb_nameを指定します。

  • ALLを指定すると、CDB内のすべてのPDBの状態を変更できます。

  • ALL EXCEPTを指定すると、pdb_nameを使用して指定したPDBを除く、CDB内のすべてのPDBの状態を変更できます。

PDBがすでに指定した状態にある場合は、PDBの状態は変わらず、エラーは返されません。状態を変更できないPDBがあると、そのPDBにエラーが発生します。

application_clauses

APPLICATION句を使用すると、アプリケーション・コンテナで次の操作を実行できます。

  • アプリケーションのインストール、パッチ適用、アップグレードおよびアンインストール

  • アプリケーション・バージョンおよびパッチ番号の登録

  • アプリケーション・ルートとアプリケーションPDBの間でのアプリケーションの同期

関連項目:

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

アプリケーション名の指定

ほとんどのapplication_clausesでは、アプリケーション名を指定する必要があります。アプリケーション名の最大長は30バイトです。名前は、「データベース・オブジェクトのネーミング規則」に指定されている要件を満たしている必要があります。アプリケーション名は、アプリケーション・コンテナ内で一意である必要があります。

アプリケーション・バージョンの指定

いくつかのapplication_clausesでは、アプリケーション・バージョンを指定する必要があります。アプリケーション・バージョンは最大長が30バイトで、英数字、句読点、スペースを使用できます。アプリケーション・バージョンには大文字と小文字の区別があり、一重引用符で囲む必要があります。

コメントの指定

いくつかのapplication_clausesでは、アプリケーションのインストール、パッチ適用またはアップグレード操作に関連付けるコメントを指定できます。commentには、一重引用符で囲んだ文字列を入力します。

INSTALL句

INSTALL句は、アプリケーション・コンテナでアプリケーションをインストールする際に使用します。現在のコンテナはアプリケーションPDBではなくアプリケーション・ルートである必要があります。

  • アプリケーションのインストールを開始する前に、BEGIN INSTALL句を指定します。

    • app_nameを使用して、アプリケーションに名前を割り当てます。

    • app_versionを使用して、アプリケーションにバージョンを割り当てます。

    • オプションのCOMMENT句を指定すると、このインストールで作成されるアプリケーション・バージョンに関連付けるコメントを入力できます。

  • アプリケーションのインストールが終了したら、END INSTALL句を指定します。

    • 対応するBEGIN INSTALL句で指定したものと同じapp_nameを指定する必要があります。

    • app_versionを指定する必要はありませんが、指定する場合は、対応するBEGIN INSTALL句に指定したものと同じバージョンを指定する必要があります。

PATCH句

PATCH句は、アプリケーション・コンテナでアプリケーションにパッチを適用する際に使用します。現在のコンテナはアプリケーションPDBではなくアプリケーション・ルートである必要があります。

  • アプリケーションへのパッチ適用を開始する前に、BEGIN PATCH句を指定します。

    • app_nameに、パッチを適用するアプリケーション名を指定します。

    • numberに、パッチ番号を指定します。

    • オプションのMINIMUM VERSION句を使用すると、パッチを適用する前にアプリケーションがあるべき最小バージョンを指定できます。app_versionに、最小アプリケーション・バージョンを指定します。現在のアプリケーション・バージョンが最小アプリケーション・バージョンよりも低い場合、エラーが発生します。この句を省略した場合、最小バージョンは現在のアプリケーション・バージョンになります。

    • オプションのCOMMENT句を指定すると、パッチ適用に関連付けるコメントを入力できます。

  • アプリケーションへのパッチ適用が終了したら、END PATCH句を指定します。

    • 対応するBEGIN PATCH句で指定したものと同じapp_nameを指定する必要があります。

    • numberを指定する必要はありませんが、指定する場合は、対応するBEGIN PATCH句に指定したものと同じ値を指定する必要があります。

UPGRADE句

UPGRADE句は、アプリケーション・コンテナでアプリケーションをアップグレードする際に使用します。現在のコンテナはアプリケーションPDBではなくアプリケーション・ルートである必要があります。

  • アプリケーションのアップグレードを開始する前に、BEGIN UPGRADE句を指定します。

    • app_nameに、アップグレードするアプリケーション名を指定します。

    • start_app_versionに、アプリケーションのアップグレード元バージョンを指定します。このバージョンが現在のアプリケーション・バージョンと一致しない場合、エラーが発生します。

    • end_app_versionに、アプリケーションのアップグレード先バージョンを指定します。

    • オプションのCOMMENT句を指定すると、アップグレードに関連付けるコメントを入力できます。

  • アプリケーションのアップグレードが終了したら、END UPGRADE句を指定します。

    • 対応するBEGIN UPGRADE句で指定したものと同じapp_nameを指定する必要があります。

    • TO end_app_versionを指定する必要はありませんが、指定する場合は、対応するBEGIN UPGRADE句に指定したものと同じバージョンを指定する必要があります。

UNINSTALL句

UNINSTALL句は、アプリケーション・コンテナからアプリケーションをアンインストールする際に使用します。現在のコンテナはアプリケーションPDBではなくアプリケーション・ルートである必要があります。

  • アプリケーションのアンインストールを開始する前に、BEGIN UNINSTALL句を指定します。

    • app_nameに、アンインストールするアプリケーション名を指定します。

  • アプリケーションのアンインストールが終了したら、END UNINSTALL句を指定します。

    • 対応するBEGIN UNINSTALL句で指定したものと同じapp_nameを指定する必要があります。

SET PATCH

SET PATCH句を使用すると、アプリケーション・コンテナにすでにインストールされているアプリケーションのパッチ番号を登録できます。この句を使用すると、PATCH句を使用してパッチ適用しなかったアプリケーションにパッチ番号を割り当てることができます。これは、PATCH句が使用できなかったOracle Databaseの旧リリースで、アプリケーションがPDBから移行された場合に便利です。現在のコンテナには、アプリケーション・ルートまたはアプリケーションPDBを指定できます。

  • app_nameに、既存のアプリケーションの名前を指定します。

  • numberを使用して、既存のアプリケーションにパッチ番号を割り当てます。

SET VERSION

SET VERSION句を使用すると、アプリケーション・コンテナにすでにインストールされているアプリケーションのバージョンを登録できます。この句を使用すると、INSTALL句を使用してインストールしなかったアプリケーションに名前とバージョンを割り当てることができます。これは、INSTALL句が使用できなかったOracle Databaseの旧リリースで、アプリケーションがPDBから移行された場合に便利です。現在のコンテナには、アプリケーション・ルートまたはアプリケーションPDBを指定できます。

  • app_nameを使用して、既存のアプリケーションに名前を割り当てます。

  • app_versionを使用して、既存のアプリケーションにバージョンを割り当てます。

SET COMPATIBILITY VERSION

SET COMPATIBILITY VERSION句を使用すると、アプリケーションの互換性バージョンを設定できます。

アプリケーションの互換性バージョンは、アプリケーション・コンテナに属するアプリケーションPDBで使用可能なアプリケーション・バージョンのうち、最も古いバージョンです。現在のコンテナはアプリケーションPDBではなくアプリケーション・ルートである必要があります。

ノート:

アプリケーション・コンテナの互換性設定より前のアプリケーション・バージョンを使用するアプリケーションPDBは接続できません。
  • app_nameを使用して、アプリケーションの名前を指定します。

  • app_versionを使用して、アプリケーションの互換性バージョンを指定します。

  • CURRENTを指定すると、互換性バージョンはアプリケーション・ルートにあるアプリケーションのバージョンに設定されます。

互換性バージョンは、互換性バージョンが設定され、アプリケーションPDBが作成されたときに適用されます。アプリケーションのアップグレードによって作成されたアプリケーション・ルート・クローンがある場合、互換性バージョンより古いバージョンに相当するすべてのアプリケーション・ルート・クローンが暗黙的に削除されます。

SYNC TO

アプリケーションを特定のバージョンまたはパッチ番号と同期できます。次の2つのバリエーションがあります。

  1. SYNC TO app_version

  2. SYNC TO PATCH patch_number

例

アプリケーションsalesappに対して次の操作を実行するとします。

  1. バージョン1.0のインストール

  2. パッチ101の適用

  3. バージョン2.0へのアップグレード

  4. パッチ102の適用

  5. 3.0へのアップグレード

ALTER PLUGGABLE DATABASE APPLICATION salesapp SYNC TO 2.0では、バージョン2.0へのアップグレードまで(それを含む)のすべての文が再実行されます。

ALTER PLUGGABLE DATABASE APPLICATION salesapp SYNC TO PATCH 102では、パッチ102の適用まで(それを含む)のすべての文が再実行されます。

SYNC

SYNC句を使用すると、アプリケーションPDBのアプリケーションを、アプリケーション・ルートの同じアプリケーションのバージョンおよびパッチ・レベルと同期できます。これは、アプリケーション・ルートのアプリケーションに変更が加えられた後に役立ちます。現在のコンテナはアプリケーションPDBである必要があります。

  • app_nameに、アプリケーション・ルートに存在するアプリケーションの名前を指定します。アプリケーションはアプリケーションPDBに存在する場合もしない場合もあります。

ALL SYNC

ALL SYNC句を使用すると、アプリケーションPDBのすべてのアプリケーションを、アプリケーション・ルートのすべてのアプリケーションと同期できます。この句は、最近アプリケーションPDBをCDBに追加し、そのアプリケーションをアプリケーション・コンテナと同期する場合に便利です。現在のコンテナはアプリケーションPDBである必要があります。

snapshot_clauses

snapshot_clausesを使用すると、PDBの存続期間中にPDBのスナップショットを作成および管理できます。

pdb_snapshot_clause

PDBスナップショットを作成できるようにするには、この句を指定します。CREATE PLUGGABLE DATABASE文でこの句を指定することもできます。

  • NONEはデフォルトであり、PDBのスナップショットを作成できないことを意味します。

  • MANUALは、PDBのスナップショットを手動でのみ作成できることを意味します。

  • snapshot_intervalが指定されている場合、指定された間隔でPDBスナップショットが自動的に作成されます。また、ユーザーがPDBスナップショットを手動で作成できるようにもなります。

  • snapshot_intervalは、分単位で指定する場合は3000未満である必要があります。

  • snapshot_intervalは、時間単位で指定する場合は2000未満である必要があります。

materialize_clause

スナップショットPDBを完全なPDBクローンに変換するには、この句を使用します。この方法でこの句を使用すると、PDBのスナップショットを削除および消去できます。

  • この句は、スナップショットとして作成されたPDBに対してのみ指定できます。

  • PDBに属するすべてのデータファイル内のすべてのブロックがコピーされます。

create_snapshot_clause

この句を使用して、PDBに接続した後でPDBスナップショットを手動で作成します。

  • PDBスナップショットが自動的に作成されるようにPDBが設定された場合でも、この分を発行できます。

  • 指定された名前のPDBスナップショットがすでに存在する場合は、エラーが報告されます。

  • 指定された名前のPDBスナップショットが作成されます。

drop_snapshot_clause

この句を使用して、PDBに接続した後でPDBスナップショットを手動で削除します。

  • このスナップショットがいずれかのPDBによって使用されている場合は、エラーが報告されます。

set_max_pdb_snapshots

この句を使用して、特定のPDBのスナップショットの最大数を増加または減少させます。最初にPDBに接続する必要があります。

  • この文を発行するときにPDBが読取り/書込みモードでオープンされていない場合は、エラーが発生します。

  • 最大数を0に設定することにより、すべてのPDBスナップショットを削除できます。

  • PDBごとに設定できるスナップショットの最大数は8です。

prepare_clause

  • この句を使用して、データベースのミラー・コピーを準備します。作成されるファイル・グループを識別するためにmirror_nameを指定する必要があります。作成されたグループにはすべての準備完了ファイルが含まれています。

  • REDUNDANCYオプションのEXTERNAL、NORMALまたはHIGHによって準備されるコピーの数を指定します。

  • ミラーの冗長性を指定しない場合、ソース・データベースの冗長性が使用されます。

名前によるプラガブル・データベースの作成:例を準備します

プラガブル・データベースの名前(pdb_name)を指定した場合、pdb_nameは現在のPDBと一致するかどうかをチェックします。一致した場合は、それが実行されます。

ALTER PLUGGABLE DATABASE pdb_name PREPARE MIRROR COPY mirror_name WITH HIGH REDUNDANCY

名前なしのプラガブル・データベースの作成:例を準備します

プラガブル・データベースの名前(pdb_name)を指定しない場合、文は現在のPDBで実行されます。

ALTER PLUGGABLE DATABASE PREPARE MIRROR COPY mirror_name WITH HIGH REDUNDANCY

drop_mirror_copy

この句を使用すると、プリコンパイルされた文によって作成されるデータおよびメタデータのミラー・コピーが破棄されます。準備操作に使用したものと同じミラー名を指定する必要があります。

この句を使用すると、すでにCREATE DATABASEまたはCREATE PLUGGABLE DATABASE文で分割されているデータベースを削除できません。

lost_write_protection

プラガブル・データベースの書込みの欠落を有効化:例

 ALTER PLUGGABLE DATABASE 
   ENABLE LOST WRITE PROTECTION

プラガブル・データベースの書込みの欠落:例を無効にしてください

 ALTER PLUGGABLE DATABASE 
   DISABLE LOST WRITE PROTECTION

データベースの消失書込み保護を無効化しても、消失書込み記憶域の割当て解除は行われないことに注意してください。消失書込み記憶域の割当て解除を行うには、DROP TABLESPACE文を使用する必要があります。

例

CDBからのPDBの切断: 例

次の文はPDB pdb1を切断し、PDBのメタデータをXMLファイル/oracle/data/pdb1.xmlに格納します。

ALTER PLUGGABLE DATABASE pdb1
  UNPLUG INTO '/oracle/data/pdb1.xml';

PDBの設定の変更: 例

次の文は、PDB pdb2内のすべての表領域で使用される記憶域の量に対する制限を500Mに変更します。

ALTER PLUGGABLE DATABASE pdb2
  STORAGE (MAXSIZE 500M);

PDBのデータファイルのオフライン化: 例

次の文は、PDB pdb3に関連付けられているデータファイルをオフラインにします。

ALTER PLUGGABLE DATABASE pdb3
  DATAFILE ALL OFFLINE;

PDBの状態の変更: 例

PDB pdb4がクローズされている、つまり、オープン・モードがMOUNTEDであることが前提となります。次の文は、READ ONLYオープン・モードでpdb4をオープンします。

ALTER PLUGGABLE DATABASE pdb4
  OPEN READ ONLY;

次の文は、FORCEキーワードを使用して、pdb4のオープン・モードをREAD ONLYからREAD WRITEに変更します。

ALTER PLUGGABLE DATABASE pdb4
  OPEN READ WRITE FORCE;

次の文は、PDB pdb4をクローズします。

ALTER PLUGGABLE DATABASE pdb4
  CLOSE;

次の文は、READ ONLYオープン・モードでPDB pdb4をオープンします。RESTRICTEDキーワードが指定されているため、PDBへのアクセスは、PDBの中でRESTRICTED SESSION権限を持っているユーザーのみに許可されます。

ALTER PLUGGABLE DATABASE pdb4
  OPEN READ ONLY RESTRICTED;

PDB pdb5がクローズされている、つまり、オープン・モードがMOUNTEDであることが前提となります。Oracle Real Application Clusters環境で、次の文は、インスタンスORCLDB_1およびORCLDB_2の中でPDB pdb5をREAD WRITEオープン・モードでオープンします。

ALTER PLUGGABLE DATABASE pdb5
  OPEN READ WRITE INSTANCES = ('ORCLDB_1', 'ORCLDB_2');

Oracle Real Application Clusters環境で、次の文は、現在のインスタンスの中のPDB pdb6をクローズして、インスタンスORCLDB_3の中でpdb6を再オープンするようにデータベースに指示します。

ALTER PLUGGABLE DATABASE pdb6
  CLOSE RELOCATE TO 'ORCLDB_3';

CDB内のすべてのPDBの状態の変更: 例

現在のコンテナがルートであることが前提となります。次の文はCDB内のすべてのPDBをREAD ONLYオープン・モードでオープンします。

ALTER PLUGGABLE DATABASE ALL
  OPEN READ ONLY;