プライマリ・コンテンツに移動
Oracle® Database管理者ガイド
12cリリース2 (12.2)
E72998-04
目次へ移動
目次
索引へ移動
索引

前
次

43 SQL*Plusを使用したPDBの管理

SQL*PlusでのPDBの管理には、PDBへの接続、PDBの変更、PDBに関連付けられたサービスの管理などのタスクが含まれます。

注意:

この章のタスクは、SQL*PlusまたはOracle SQL Developerを使用して実行できます。

43.1 PDBの管理の概要

プラガブル・データベース(PDB)の管理には、非CDBの管理に必要なタスクのサブセットが含まれます。

タスクのこのサブセットは、大半がPDBと非CDBで同じですが、一部は異なります。たとえば、PDBのオープン・モードを変更する場合に違いがあります。また、PDB管理者は、単一のPDBの管理に限定され、マルチテナント・コンテナ・データベース(CDB)内の他のPDBは影響を受けません。

他の管理タスクは、PDBと非CDBで同じです。表43-1は、これらのタスクの一部について説明しています。

表43-1 PDBと非CDBに共通する管理タスク

タスク 説明 関連情報

表領域の管理

PDBの表領域を作成、変更および削除できます。各PDBのデフォルト表領域およびデフォルト表領域タイプを指定できます。また、各PDBのデフォルト一時表領域があります。必要に応じて、個々のPDBで使用する追加の一時表領域を作成できます。

「表領域の管理」

「PDBの変更」

データファイルおよび一時ファイルの管理

各PDBには独自のデータファイルがあります。非CDBで管理しているのと同じ方法で、データファイルおよび一時ファイルを管理できます。CREATE PLUGGABLE DATABASEまたはALTER PLUGGABLE DATABASE文でSTORAGE句を使用して、PDBのデータファイルが使用する記憶域の量を制限することもできます。

「データファイルおよび一時ファイルの管理」

「ストレージ制限」

「PDBの変更」

スキーマ・オブジェクトの管理

非CDBで行うのと同じ方法で、PDB内のスキーマ・オブジェクトを作成、変更および削除できます。特定のPDBで起動するトリガーを作成することもできます。

CDBのデータベース・リンクを管理する場合、ルートには一意のグローバル・データベース名があり、各PDBも同様です。ルートのグローバル名は、DB_NAMEおよびDB_DOMAIN初期化パラメータで定義されます。PDBのグローバル・データベース名は、PDB名およびDB_DOMAIN初期化パラメータによって定義されます。各PDBのグローバル・データベース名はドメイン内で一意である必要があります。

スキーマ・オブジェクト

CDBでのトリガーの作成の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

「データベース・リンクの作成」

PDBを管理する場合、ALTER DATABASEALTER PLUGGABLE DATABASEまたはALTER SYSTEM文を使用してPDBを変更できます。また、PDBでDDL文を実行することもできます。

また、現在のコンテナがPDBである場合に実行できない管理タスクを理解することも重要です。次に、現在のコンテナがルートである場合にCDB全体またはルートで共通ユーザーが実行する一部の管理タスクを示します。

  • CDBインスタンスの起動および停止

  • ALTER DATABASE文を使用したCDBまたはルートの変更

  • ALTER SYSTEM文を使用したCDBまたはルートの変更

  • CDBまたはルートでのデータ定義言語(DDL)文の実行

  • 次のコンポーネントの管理:

    • プロセス

    • メモリー

    • エラーおよびアラート

    • 診断データ

    • 制御ファイル

    • オンラインREDOログ・ファイルおよびアーカイブREDOログ・ファイル

    • Undo

  • PDBの作成、接続、切断および削除

現在のコンテナがルートである共通ユーザーは、1つ以上のPDBのオープン・モードを変更することもできます。このタスクおよびCDBまたはルートの管理に関連するその他のタスクの詳細は、「SQL*Plusを使用したCDBの管理」を参照してください。

現在のコンテナがPDBである共通ユーザーまたはローカル・ユーザーは、現在のPDBのオープン・モードを変更できます。このタスクの詳細は、「PDBの変更」を参照してください。

43.2 SQL*Plusを使用したPDBへの接続

いくつかの手法を使用して、SQL*Plus CONNECTコマンドでPDBに接続できます。

この項では、SQL*Plusで非CDBに接続する方法を理解していることを想定しています。詳細は、「SQL*Plusを使用したデータベースへの接続」を参照してください。

次の手法を使用して、SQL*Plus CONNECTコマンドでPDBに接続できます。

  • オペレーティング・システム認証を使用したローカル接続

  • 簡易接続を使用したデータベース接続

  • サービス名を使用したデータベース接続

次の前提条件を満たしている必要があります。

  • PDBに接続するユーザーは、そのPDBでCREATE SESSION権限を付与されている必要があります。

  • SYSDBASYSOPERSYSBACKUPまたはSYSDGの管理権限を持たないユーザーとしてPDBに接続するには、PDBをオープンにしている必要があります。PDBのオープン・モードの変更の詳細は、「PDBのオープン・モードの変更」および「PDBの変更」を参照してください。

注意:

この項では、PDBに接続するユーザーはローカル・ユーザーであると想定しています。共通ユーザーとしてPDBに接続することも可能で、共通ユーザーとしてルートに接続してからPDBに切り替えることができます。

SQL*Plus CONNECTコマンドを使用してPDBに接続する手順は、次のとおりです。

  1. SQL*Plusを起動できるよう、環境を構成します。

    「SQL*Plusを使用したデータベースへの接続」を参照してください。

  2. /NOLOG引数を使用してSQL*Plusを起動します。

    sqlplus /nolog
    
  3. 簡易接続またはネット・サービス名を使用してCONNECTコマンドを発行し、PDBに接続します。

    PDBに接続するには、PDBプロパティを指定してサービスに接続します。

例43-1 PDBのネット・サービス名を使用したSQL*PlusでのPDBへの接続

次のコマンドでは、hrappサービスを使用してhrユーザーに接続します。hrappサービスには、hrpdb PDBのPDBプロパティが含まれています。この例では、hrappサービスのネット・サービス名を持つようにクライアントが設定されていると想定しています。

CONNECT hr@hrapp

他の例は、「手順4: SQL*PlusのCONNECTコマンドの発行」を参照してください。

関連項目:

43.3 PDBの変更

PDBは、ALTER PLUGGABLE DATABASE文とSQL*PlusのSTARTUPおよびSHUTDOWNコマンドを使用して変更できます。

43.3.1 ALTER PLUGGABLE DATABASE文を使用したPDBの変更

ALTER PLUGGABLE DATABASE SQL文でPDBを変更できます。

43.3.1.1 ALTER PLUGGABLE DATABASE文を使用したPDBの変更の概要

ALTER PLUGGABLE DATABASE文でPDBを変更できます。

現在のコンテナがPDBである場合、次のいずれかの句が含まれたALTER PLUGGABLE DATABASE文によりPDBが変更されます。

  • database_file_clauses

    この句は、ALTER DATABASE文での場合と同様に機能しますが、文は現在のPDBに適用されます。

  • set_time_zone_clause

    この句は、ALTER DATABASE文での場合と同様に機能しますが、現在のPDBに適用されます。

  • DEFAULT TABLESPACE

    現在のコンテナがPDBである間に作成されたユーザーの場合、この句では、デフォルト表領域がCREATE USER文で指定されていない場合に、ユーザーのデフォルト表領域を指定します。

  • DEFAULT TEMPORARY TABLESPACE

    現在のコンテナがPDBである間に作成されたユーザーの場合、この句では、デフォルト一時表領域がCREATE USER文で指定されていない場合に、ユーザーのデフォルト一時表領域を指定します。

  • RENAME GLOBAL_NAME

    この句によって、PDBの一意のグローバル・データベース名が変更されます。新しいグローバル・データベース名は、CDB内のいずれのコンテナ名とも異なる必要があります。PDBのグローバル・データベース名を変更すると、そのPDB名は、グローバル・データベース名の、最初のピリオドの前の部分の名前に変更されます。

    グローバル・データベース名を変更する場合は、PDBへの接続に使用するデータベース・サービスのPDBプロパティを変更する必要があります。「PDBに関連付けられたサービスの管理」を参照してください。

  • SET DEFAULT { BIGFILE | SMALLFILE } TABLESPACE

    この句によって、PDBで以降に作成される表領域のデフォルト・タイプがbigfileまたはsmallfileに変更されます。この句は、ALTER DATABASE文での場合と同様に機能しますが、現在のPDBに適用されます。

  • DEFAULT EDITION

    この句は、ALTER DATABASE文での場合と同様に機能しますが、現在のPDBに適用されます。各PDBはエディションに基づく再定義を使用でき、あるPDBのエディションは他のPDBのエディションに影響しません。各PDBに独自のアプリケーションがあるマルチテナント環境では、個別のアプリケーションごとに、エディションに基づく再定義を独立して使用できます。

  • pdb_storage_clause

    この句によって、PDBに属するすべての表領域が使用する記憶域の量に対する制限が設定されます。この制限は、PDBに属している表領域を構成するすべてのデータファイルおよび一時ファイルの合計サイズに適用されます。

    この句では、PDB内の統合監査OSスピルオーバー(.bin形式)ファイルに使用できるストレージ量の制限を設定することもできます。この制限に達した場合は、これらのファイルにストレージを追加できません。

    この句では、PDBに接続しているセッションが使用できる共有一時表領域の記憶域の量に対する制限も設定できます。制限に達すると、PDBに接続しているセッションは、共有一時表領域で追加の記憶域を使用できなくなります。

  • pdb_change_state_clause

    この句によって、現在のPDBのオープン・モードが変更されます。

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

    この句でFORCEを指定すると、ALTER PLUGGABLE DATABASE文のセマンティクスが変わるため、現在閉じているPDBをオープンする以外に、すでに開いているPDBのオープン・モードを変更するために使用できます。

    「ALTER PLUGGABLE DATABASEを使用したPDBのオープン・モードの変更」を参照してください。

  • logging_clause

    注意:

    この句は、Oracle Database 12cリリース1 (12.1.0.2)以上で使用できます。

    この句では、PDBのロギング属性を指定します。ロギング属性は、特定のDML操作をREDOログ・ファイルに記録する(LOGGING)か記録しない(NOLOGGING)かを制御します。

    この句を使用して、次の属性のいずれかを指定できます。

    • LOGGINGは、PDB内で今後作成される表領域がいずれも、デフォルトでLOGGING属性を使用して作成されることを示します。このデフォルトのロギング属性は、CREATE TABLE文などのスキーマ・オブジェクト・レベルでNOLOGGINGを指定することで上書きできます。

    • NOLOGGINGは、PDB内で今後作成される表領域がいずれも、デフォルトでNOLOGGING属性を使用して作成されることを示します。このデフォルトのロギング属性は、CREATE TABLE文などのスキーマ・オブジェクト・レベルでLOGGINGを指定することで上書きできます。

    指定の属性は、CREATE TABLESPACE文にlogging_clauseが指定されていない場合に、PDB内で作成される表領域のロギング属性の設定に使用されます。

    DBA_PDBSビューには、PDBの現在のロギング属性が表示されます。

    注意:

    この句を使用するには、PDBを制限モードでオープンする必要があります。

    関連項目:

  • pdb_force_logging_clause

    注意:

    この句は、Oracle Database 12cリリース1 (12.1.0.2)以上で使用できます。

    この句は、PDBを強制ロギング・モードまたは強制ロギングなしモードにするか、PDBの強制ロギングモードまたは強制ロギングなしモードを解除します。

    この句を使用して、次の属性のいずれかを指定できます。

    • ENABLE FORCE LOGGINGはPDBを強制ロギング・モードにし、これにより、一時表領域および一時セグメントでの変更を除いたPDBでの変更はすべて記録されます。強制ロギング・モードは、スキーマ・オブジェクト・レベルで上書きできません。

      PDBレベルの強制ロギング・モードは、PDBの各表領域で指定するNOLOGGINGまたはFORCE LOGGING設定、およびPDBの各データベース・オブジェクトで指定するNOLOGGING設定より優先され、これらの設定には影響されません。

      ENABLE FORCE LOGGINGは、PDBが強制ロギングなしモードである場合、指定できません。DISABLE FORCE NOLOGGINGは、最初に指定する必要があります。

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

    • ENABLE FORCE NOLOGGINGはPDBを強制ロギングなしモードにし、これにより、PDBでの変更は記録されません。強制ロギングなしモードは、スキーマ・オブジェクト・レベルで上書きできません。

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

      ENABLE FORCE NOLOGGINGは、PDBが強制ロギング・モードである場合、指定できません。DISABLE FORCE LOGGINGは、最初に指定する必要があります。

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

    DBA_PDBSビューには、PDBが強制ロギング・モードであるか、強制ロギングなしモードであるかが表示されます。

    注意:

    この句を使用するには、PDBを制限モードでオープンする必要があります。

    関連項目:

  • pdb_recovery_clause

    注意:

    この句は、Oracle Database 12cリリース1 (12.1.0.2)以上で使用できます。

    ALTER PLUGGABLE DATABASE DISABLE RECOVERYは、PDBに属するデータファイルをオフラインにし、PDBのリカバリを無効にします。PDBのデータファイルは、リカバリが再度有効になるまで、リカバリ・セッションに含まれません。リカバリ中に作成された新しいデータファイルはいずれも無効になり、PDBの無名ファイルとして作成されます。

    ALTER PLUGGABLE DATABASE ENABLE RECOVERYは、PDBに属するデータファイルをオンラインにし、PDBをアクティブ・リカバリとマークします。このようなファイルはリカバリ・セッションに含まれます。

    PDBのリカバリ・ステータスを確認するには、V$PDBSビューのRECOVERY_STATUS列を問い合せます。

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

ALTER PLUGGABLE DATABASE文でサポートされている句が含まれ、現在のコンテナがPDBである場合に発行されたALTER DATABASE文は、対応するALTER PLUGGABLE DATABASE文と同じ効果があります。ただし、これらの文には、pdb_storage_clausepdb_change_state_clauselogging_clause,、pdb_recovery_clauseなど、PDBに固有の句を含めることはできません。

43.3.1.2 ALTER PLUGGABLE DATABASE文を使用したPDBの変更

ALTER PLUGGABLE DATABASE文を使用して、単一PDBの属性を変更できます。

単一PDBの属性を変更する句の詳細は、「ALTER PLUGGABLE DATABASE文を使用したPDBの変更の概要」を参照してください。現在のコンテナがPDBである場合、これらの句のいずれかが含まれたALTER PLUGGABLE DATABASE文によりPDBが変更されます。この変更により、PDBのルートのデフォルト設定が上書きされます。この変更は、ルートまたは他のPDBには影響しません。

次の前提条件を満たしている必要があります。

  • PDBのオープン・モードをマウントからオープンに、またはオープンからマウントに変更するには、現在のユーザーにSYSDBASYSOPERSYSBACKUPまたはSYSDG管理権限が必要であり、その権限は共通に付与されているか、またはPDBでローカルに付与されている必要があります。ユーザーは、接続時にAS SYSDBAAS SYSOPERAS SYSBACKUPまたはAS SYSDGをそれぞれ使用して、権限を行使する必要があります。

  • ALTER PLUGGABLE DATABASE文を使用して実行される他のすべての操作については、現在のユーザーにALTER DATABASEシステム権限が必要であり、その権限は共通に付与されているか、またはPDBでローカルに付与されている必要があります。

  • PDBをクローズするには、そのPDBがオープンされている必要があります。

注意:

この項では、ALTER PLUGGABLE DATABASE文を使用したPDBのグローバル・データベース名の変更については説明していません。これを行うには、「PDBのグローバル・データベース名の変更」を参照してください。

ALTER PLUGGABLE DATABASE文を使用してPDBを変更する手順は、次のとおりです。

  1. SQL*Plusで、現在のコンテナがPDBであることを確認します。

    「SQL*Plusを使用したPDBへの接続」を参照してください。

  2. ALTER PLUGGABLE DATABASE文を実行します。

次の例では、単一PDBを変更します。

例43-2 PDBのオープン・モードの変更

ALTER PLUGGABLE DATABASE文によって、現在のPDBのオープン・モードがマウントに変更されます。

ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;

次の文では、現在のPDBのオープン・モードを読取り専用に変更します。

ALTER PLUGGABLE DATABASE OPEN READ ONLY;

FORCEキーワードを指定する場合を除き、PDBのオープン・モードを読取り専用または読取り/書込みに変更するには、マウント・モードである必要があります。

次の文では、現在のPDBのオープン・モードをマウントまたはオープンの読取り専用からオープンの読み書きに変更します。

ALTER PLUGGABLE DATABASE OPEN FORCE;

次の文では、現在のPDBのオープン・モードをマウントから移行に変更します。

ALTER PLUGGABLE DATABASE OPEN UPGRADE;

例43-3 PDBのデータファイルのオンライン化

このALTER PLUGGABLE DATABASE文では、database_file_clauseを使用して、/u03/oracle/pdb1_01.dbfデータファイルをオンラインにします。

ALTER PLUGGABLE DATABASE DATAFILE '/u03/oracle/pdb1_01.dbf' ONLINE;

例43-4 PDBのデフォルト表領域の変更

次のALTER PLUGGABLE DATABASE文では、DEFAULT TABLESPACE句を使用して、PDBのデフォルト永続表領域をpdb1_tbsに設定します。

ALTER PLUGGABLE DATABASE DEFAULT TABLESPACE pdb1_tbs;

次のALTER PLUGGABLE DATABASE文では、DEFAULT TEMPORARY TABLESPACE句を使用して、PDBのデフォルト一時表領域をpdb1_tempに設定します。

ALTER PLUGGABLE DATABASE DEFAULT TEMPORARY TABLESPACE pdb1_temp;

ALTER PLUGGABLE DATABASE文で指定した表領域または表領域グループは、PDBに存在する必要があります。現在のコンテナがPDBであり、デフォルトの表領域または一時表領域が明示的に割り当てられていないユーザーは、PDBのデフォルトの表領域または一時表領域を使用します。

例43-5 PDBのデフォルト表領域タイプの変更

次のALTER DATABASE文では、SET DEFAULT TABLESPACE句を使用して、PDBのデフォルトの表領域タイプをbigfileに変更します。

ALTER PLUGGABLE DATABASE SET DEFAULT BIGFILE TABLESPACE;

例43-6 PDBのストレージ制限の設定

次の文では、PDBに属しているすべての表領域のストレージ制限を2GBに設定します。

ALTER PLUGGABLE DATABASE STORAGE(MAXSIZE 2G);

次の文では、PDBに属している表領域にストレージ制限がないことを指定します。

ALTER PLUGGABLE DATABASE STORAGE(MAXSIZE UNLIMITED);

次の文では、PDBに属している表領域にストレージ制限がないこと、およびPDBに接続しているセッションが使用できる共有一時表領域にストレージ制限がないことを指定します。

ALTER PLUGGABLE DATABASE STORAGE UNLIMITED;

例43-7 PDBのロギング属性の設定

PDBが制限モードでオープンしている場合、次の文では、PDBにNOLOGGING属性を指定します。

ALTER PLUGGABLE DATABASE NOLOGGING;

注意:

この例では、Oracle Database 12c Release 1 (12.1.0.2)以上が必要です。

例43-8 PDBの強制ロギング・モードの設定

次の文では、PDBに対して強制ロギング・モードを有効にします。

ALTER PLUGGABLE DATABASE ENABLE FORCE LOGGING;

注意:

この例では、Oracle Database 12c Release 1 (12.1.0.2)以上が必要です。

例43-9 PDBのデフォルト・エディションの設定

この例では、現在のPDBのデフォルト・エディションをPDB1E3に設定します。

ALTER PLUGGABLE DATABASE DEFAULT EDITION = PDB1E3;

関連項目:

  • ALTER PLUGGABLE DATABASE文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

  • エディションに基づく再定義の詳細な説明は、『Oracle Database開発ガイド』を参照してください。

43.3.1.3 PDBのグローバル・データベース名の変更

ALTER PLUGGABLE DATABASE RENAME GLOBAL_NAME TO文を使用して、PDBのグローバル・データベース名を変更できます。

PDBのグローバル・データベース名を変更した場合、新しいグローバル・データベース名は、CDB内のいずれのコンテナ名とも異なる必要があります。

次の前提条件を満たしている必要があります。

  • 現行ユーザーは、ALTER DATABASEシステム権限を持っている必要があり、その権限は共通に付与されているか、またはPDBでローカルに付与されている必要があります。

  • Oracle Real Application Clusters (Oracle RAC)データベースでは、現在のインスタンスのみでPDBをオープンする必要があります。その他すべてのインスタンスでは、PDBをクローズする必要があります。

  • 変更するPDBは、PDBでのRESTRICTED SESSION権限を持つユーザーのみがアクセスできるよう、RESTRICTEDを指定して読取り/書込みモードで現在のインスタンス上でオープンされている必要があります。

PDBのグローバル・データベース名を変更するには、次の手順に従います。

  1. SQL*Plusで、現在のコンテナがPDBであることを確認します。

    「SQL*Plusを使用したPDBへの接続」を参照してください。

  2. ALTER PLUGGABLE DATABASE RENAME GLOBAL_NAME TO文を実行します。

    次の例は、PDBのグローバル・データベース名をsalespdb.example.comに変更します。

    ALTER PLUGGABLE DATABASE RENAME GLOBAL_NAME TO salespdb.example.com;
    
  3. PDBをクローズします。

  4. 読取り/書込みモードでPDBをオープンします。

PDBのグローバル・データベース名を変更すると、そのPDB名は、新しいグローバル名の最初の部分(最初のピリオドの前の部分)に変更されます。また、Oracle DatabaseはPDBのデフォルトのデータベース・サービス名を自動的に変更します。Oracle Databaseは、PDB内のすべてのデータベース・サービスのPDBプロパティを、PDBの新しいグローバル名に変更します。手順3および4のとおり、PDBをクローズして読取り/書込みモードでオープンし、Oracle Databaseで新しいPDBのサービス名がCDBに統合されるようにする必要があります。

データベース・サービスにアクセスするクライアントで、Oracle Net Serviceが正しく構成されている必要があります。PDBの名前を変更した場合、Oracle Net Servicesの構成も変更する必要がある場合があります。

関連項目:

43.3.2 SQL*PlusのSTARTUPおよびSHUTDOWNコマンドを使用したPDBの変更

現在のコンテナがPDBの場合、SQL*PlusのSTARTUPコマンドを使用してPDBをオープンし、SQL*PlusのSHUTDOWNコマンドを使用してPDBをクローズできます。

43.3.2.1 PDBでのSTARTUP SQL*Plusコマンドの使用

現在のコンテナがPDBである場合、SQL*PlusのSTARTUPコマンドでPDBをオープンできます。

STARTUPコマンドの次のオプションを使用して、PDBをオープンします。

  • FORCE

    読取り/書込みモードで再オープンする前に、オープン状態のPDBをクローズします。このオプションが指定されている場合、他のオプションは使用できません。

  • RESTRICT

    PDBでRESTRICTED SESSIONシステム権限を持つユーザーのみがそのPDBにアクセスできるようにします。

    OPEN READ WRITEOPEN READ ONLYも指定されず、RESTRICTが指定されている場合、PDBは、属しているCDBがフィジカル・スタンバイ・データベースのときに読取り専用でオープンされます。そうでないときは、PDBは読取り/書込みモードでオープンされます。

  • OPEN open_pdb_options

    PDBを読取り/書込みモードまたは読取り専用モードでオープンします。OPEN READ WRITEまたはOPEN READ ONLYを指定します。RESTRICTが指定されていない場合、READ WRITEが常にデフォルトです。

現在のコンテナがPDBの場合にSTARTUPコマンドを発行するには、次の前提条件を満たしている必要があります。

  • 現行ユーザーには、SYSDBASYSOPERSYSBACKUPまたはSYSDG管理権限があり、その権限は共通に付与されているか、またはPDBでローカルで付与されている必要があります。ユーザーは、接続時にAS SYSDBAAS SYSOPERAS SYSBACKUPまたはAS SYSDGをそれぞれ使用して、権限を行使する必要があります。

  • FORCEオプションを使用する場合を除き、PDBをオープンするには、PDBがマウント・モードである必要があります。

  • PDBをマウント・モードにするには、そのPDBが読取り専用オープン・モードまたは読取り/書込みオープン・モードであることが必要です。

STARTUPコマンドを使用してPDBを変更する手順は、次のとおりです。

  1. SQL*Plusで、現在のコンテナがPDBであることを確認します。

    「SQL*Plusを使用したPDBへの接続」を参照してください。

  2. STARTUPコマンドを実行します。

関連項目:

例43-10 STARTUPコマンドを使用してPDBを読取り/書込みモードでオープンする方法

STARTUP OPEN

例43-11 STARTUPコマンドを使用してPDBを読取り専用モードでオープンする方法

STARTUP OPEN READ ONLY

例43-12 STARTUPコマンドを使用してPDBを読取り専用制限モードでオープンする方法

STARTUP RESTRICT OPEN READ ONLY

例43-13 STARTUPコマンドおよびFORCEオプションを使用してPDBを読取り/書込みモードでオープンする方法

この例では、PDBが現在オープンしていると想定しています。FORCEオプションによって、PDBがクローズされ、その後、読取り/書込みモードでオープンされます。

STARTUP FORCE

43.3.2.2 PDBでのSQL*PlusのSHUTDOWNコマンドの使用

現在のコンテナがPDBである場合、SQL*PlusのSHUTDOWNコマンドでPDBをクローズできます。

SHUTDOWNコマンドがPDBで正常に発行されると、PDBはマウント・モードになります。

SHUTDOWNモードは次のいずれかになります。

  • SHUTDOWNのみ指定した場合、PDBはNORMALモードで停止されます。

  • SHUTDOWN IMMEDIATEを指定した場合、PDBはIMMEDIATEモードで停止されます。

  • SHUTDOWN ABORTを指定した場合、PDBは強制的にクローズされます。

    単一インスタンスCDBでは、SHUTDOWN ABORTを指定する場合にPDBメディア・リカバリが必要です。Oracle Real Application Clusters (Oracle RAC) CDBでは、SHUTDOWN ABORTコマンドが最後のオープン・インスタンスをクローズする場合にPDBメディア・リカバリが必要です。

現在のコンテナがPDBである場合にSHUTDOWNコマンドを発行するには、次の前提条件を満たしている必要があります。

  • 現行ユーザーには、SYSDBASYSOPERSYSBACKUPまたはSYSDG管理権限があり、その権限は共通に付与されているか、またはPDBでローカルで付与されている必要があります。ユーザーは、接続時にAS SYSDBAAS SYSOPERAS SYSBACKUPまたはAS SYSDGをそれぞれ使用して、権限を行使する必要があります。

  • PDBをクローズするには、そのPDBがオープンされている必要があります。

SHUTDOWNコマンドを使用してPDBを変更する手順は、次のとおりです。

  1. SQL*Plusで、現在のコンテナがPDBであることを確認します。

    「SQL*Plusを使用したPDBへの接続」を参照してください。

  2. SHUTDOWNコマンドを実行します。

注意:

  • 現在のコンテナがPDBの場合、SHUTDOWNコマンドは、CDBインスタンスではなくPDBのみをクローズします。

  • 非CDBで使用できるSHUTDOWN TRANSACTIONALと同等のSHUTDOWNコマンドは、PDBにはありません。

関連項目:

例43-14 SHUTDOWN IMMEDIATEコマンドを使用してPDBをクローズする方法

SHUTDOWN IMMEDIATE

43.4 ALTER SYSTEM文を使用したPDBの変更

ALTER SYSTEM文を使用してPDBを変更できます。

43.4.1 PDBでのALTER SYSTEM文の使用の概要

ALTER SYSTEM文によって、PDBを動的に変更できます。PDBが動作する方法を変更する場合は、ALTER SYSTEM文を発行できます。

現在のコンテナがPDBである場合、次のALTER SYSTEM文を実行できます。

  • ALTER SYSTEM FLUSH SHARED_POOL

  • ALTER SYSTEM FLUSH BUFFER_CACHE

  • ALTER SYSTEM FLUSH FLASH_CACHE

  • ALTER SYSTEM ENABLE RESTRICTED SESSION

  • ALTER SYSTEM DISABLE RESTRICTED SESSION

  • ALTER SYSTEM SET USE_STORED_OUTLINES

  • ALTER SYSTEM SUSPEND

  • ALTER SYSTEM RESUME

  • ALTER SYSTEM CHECKPOINT

  • ALTER SYSTEM CHECK DATAFILES

  • ALTER SYSTEM REGISTER

  • ALTER SYSTEM KILL SESSION

  • ALTER SYSTEM DISCONNECT SESSION

  • ALTER SYSTEM SET initialization_parameter (初期化パラメータのサブセットの場合)

その他のすべてのALTER SYSTEM文は、CDB全体に影響し、ルートの共通ユーザーによって実行される必要があります。

ALTER SYSTEM SET initialization_parameter文では、PDBの一部の初期化パラメータのみを変更できます。すべての初期化パラメータは、ルートに対して設定できます。初期化パラメータがPDB用に明示的に設定されていない場合、PDBではルートのパラメータ値を継承します。

V$SYSTEM_PARAMETERビューのパラメータのISPDB_MODIFIABLE列がTRUEの場合は、PDBの初期化パラメータを変更できます。次の問合せにより、PDBで変更可能なすべての初期化パラメータがリストされます。

SELECT NAME FROM V$SYSTEM_PARAMETER WHERE ISPDB_MODIFIABLE='TRUE' ORDER BY NAME;

現在のコンテナがPDBである場合、ALTER SYSTEM SET initialization_parameter文を実行して、PDBを変更します。この文は、ルートまたは他のPDBには影響しません。次の表は、サーバー・パラメータ・ファイル(SPFILE)を使用し、ALTER SYSTEM SET文をPDBで実行した場合のSCOPE句の動作について説明しています。

SCOPE設定 動作

MEMORY

初期化パラメータ設定は、メモリーで変更され、PDBで即時に有効になります。新しい設定は、PDBにのみ影響を及ぼします。

この設定によって、次のいずれかの場合、ルートで設定された値に戻ります。

  • ALTER SYSTEM SET文によって、SCOPEBOTHまたはMEMORYに等しい場合はルートのパラメータの値が設定され、PDBがクローズして再オープンされます。SCOPESPFILEと等しい場合、PDBをクローズして再オープンしてもPDBのパラメータ値は変更されません。

  • PDBが停止し、再オープンされます。

  • CDBが停止し、再オープンされます。

SPFILE

初期化パラメータ設定は、PDBに対して変更されて永続的に格納されます。新しい設定は、次の場合に有効になります。

  • PDBが停止し、再オープンされます。

  • CDBが停止し、再オープンされます。

これらの場合、新しい設定はPDBにのみ影響を及ぼします。

BOTH

初期化パラメータ設定は、メモリーで変更され、PDBに対して変更されて永続的に格納されます。新しい設定はPDBで即時に有効になり、PDBが停止して再オープンされた後、またはCDBが停止して再オープンされた後も保持されます。新しい設定は、PDBにのみ影響を及ぼします。

PDBがCDBから切断されると、SCOPE=BOTHまたはSCOPE=SPFILEを使用してPDBに指定された初期化パラメータの値は、PDBのXMLメタデータ・ファイルに追加されます。これらの値は、PDBがCDBに接続したときにPDBでリストアされます。

注意:

テキスト初期化パラメータ・ファイル(PFILE)には、PDB固有のパラメータ値を含めることはできません。

43.4.2 PDBでのALTER SYSTEM文の使用

ALTER SYSTEM文を使用してPDBを変更できます。

現行ユーザーは、次の権限を付与されている必要があり、これらの権限は、共通で付与されているか、PDBでローカルに付与されている必要があります。

  • CREATE SESSION

  • ALTER SYSTEM

ALTER SYSTEMを使用してPDBを変更する手順は、次のとおりです。

  1. SQL*Plusで、現在のコンテナがPDBであることを確認します。

    「SQL*Plusを使用したPDBへの接続」を参照してください。

  2. ALTER SYSTEM文を実行します。

例43-15 PDBでのセッション制限の有効化

PDBでセッションを制限するには、次の文を発行します。

ALTER SYSTEM ENABLE RESTRICTED SESSION;

例43-16 PDBの統計収集レベルの変更

次のALTER SYSTEM文によって、現在のPDBのSTATISTICS_LEVEL初期化パラメータがALLに設定されます。

ALTER SYSTEM SET STATISTICS_LEVEL = ALL SCOPE = MEMORY;

関連項目:

43.5 PDBに関連付けられているサービスの管理

PDBのサービスを作成、変更または削除できます。

43.5.1 PDBに関連付けられているサービスの概要

データベース・サービスには、オプションのPDBプロパティがあります。PDBのプロパティは、サービスの作成時に設定し、サービスのPDBプロパティを変更できます。

PDBプロパティによって、PDBにサービスが関連付けられます。PDBプロパティを使用してクライアントがサービスに接続する場合、接続の現在のコンテナはPDBになります。サービスのPDBプロパティを表示するには、ALL_SERVICESデータ・ディクショナリ・ビューを問い合せるか、またはSRVCTLユーティリティの使用時にsrvctl config serviceコマンドを使用します。

PDBプロパティは、サービスの作成時またはサービスのPDBプロパティの変更時のみ必要です。たとえば、サービスの開始、停止または削除時はPDBプロパティは指定せず、またPDBプロパティを変更せずにサービスを変更する場合にはPDBプロパティを指定する必要はありません。

PDBが作成されると、PDBの新しいデフォルト・サービスが自動的に作成され、このサービスにはPDBと同じ名前が付けられます。このサービスは、ユーザーが管理できず、管理タスクにのみ使用する必要があります。このデフォルトPDBサービスをアプリケーションに使用しないでください。ユーザー定義のサービスはアプリケーションの要件に適合するようにカスタマイズできるため、アプリケーションには常にユーザー定義のサービスを使用してください。

注意:

  • 各データベース・サービス名は、1つのCDB内で一意である必要があり、特定のリスナーからアクセスされるインスタンスを持つすべてのCDBのスコープ内で一意である必要があります。

  • Oracle Clusterware環境では、PDBに作成される各サービスにOracle Clusterwareリソースを作成する必要があります。

  • データベースがOracle RestartまたはOracle Clusterwareで管理されている場合、SRVCTLユーティリティを使用して、クローズするPDBのPDBプロパティを指定してサービスを開始すると、PDBは、サービスが開始されたノードにおいて読取り/書込みモードでオープンされます。ただし、PDBサービスを停止しても、PDBのオープン・モードは変更されません。PDBのオープン・モードの変更の詳細は、「ALTER PLUGGABLE DATABASE文を使用したPDBの変更」を参照してください。

  • PDBを切断または削除した場合、切断または削除されたPDBのサービスは自動的に削除されません。これらのサービスは、手動で削除する必要があります。

  • サービスをプロキシPDBと関連付けないでください。

43.5.2 PDBのサービスの作成、変更または削除

PDBプロパティを使用してサービスを作成、変更または削除できます。

次に示す方法で実行できます。

  • 単一インスタンス・データベースがOracle Restartで管理されている場合、またはOracle RACデータベースがOracle Clusterwareで管理されている場合は、サーバー制御(SRVCTL)ユーティリティを使用して、サービスを作成、変更または削除します。

    SRVCTLユーティリティを使用してPDBのサービスを作成する場合は、add serviceコマンドを使用し、-pdbパラメータでPDBを指定します。サービスの作成時に-pdbパラメータをPDBに指定しない場合、そのサービスはルートに関連付けられます。

    SRVCTLユーティリティを使用してサービスのPDBプロパティを変更する場合は、modify serviceコマンドを使用し、-pdbパラメータでPDBを指定します。SRVCTLユーティリティを使用してPDBのサービスを削除するには、remove serviceコマンドを使用します。

    -pdbパラメータが含まれていない場合でも、start serviceコマンドやstop serviceコマンドなどの他のSRVCTLコマンドを使用してサービスを管理できます。

    SRVCTLユーティリティを使用してサービスを作成または変更する場合、PDB名は検証されません。ただし、無効なPDB名を使用してサービスを開始しようとすると、エラーが発生します。

  • データベースがOracle RestartまたはOracle Clusterwareで管理されていない場合は、DBMS_SERVICEパッケージを使用して、データベース・サービスを作成または削除します。

    DBMS_SERVICEパッケージを使用してサービスを作成する場合、サービスのPDBプロパティは現在のコンテナに設定されます。したがって、特定のPDBに設定されたPDBプロパティを持つサービスをDBMS_SERVICEパッケージを使用して作成するには、現在のコンテナがそのPDBであるときにCREATE_SERVICEプロシージャを実行します。現在のコンテナがルートの場合にCREATE_SERVICEプロシージャを使用してサービスを作成すると、そのサービスはルートと関連付けられます。

    DBMS_SERVICEパッケージを使用してサービスのPDBプロパティは変更できません。ただし、1つのPDBからサービスを削除し、同様なサービスを別のPDBに作成できます。この場合、新しいサービスのPDBプロパティは、それが作成されたPDBのものになります。

    START_SERVICEプロシージャやSTOP_SERVICEプロシージャなど、他のDBMS_SERVICEサブプログラムを使用してサービスを管理することもできます。DELETE_SERVICEプロシージャを使用してサービスを削除します。

サービスの作成および変更にSRVCTLユーティリティを使用することをお薦めします。ただし、SRVCTLユーティリティを使用しない場合は、DBMS_SERVICEパッケージを使用できます。

SRVCTLユーティリティを使用してサービスをPDBプロパティを使用して作成、変更または削除する手順は、次のとおりです。

  1. 正しいユーザー・アカウントを使用してホスト・コンピュータにログインし、SRVCTLを正しいOracleホームから確実に実行します。

  2. サービスを作成または変更するには、add serviceコマンドを実行し、-pdbパラメータでPDBを指定します。サービスのPDBプロパティを変更する場合は、modify serviceコマンドを実行し、-pdbパラメータでPDBを指定します。サービスを削除するには、remove serviceコマンドを実行します。

DBMS_SERVICEパッケージを使用してPDBのサービスを作成または削除する手順は、次のとおりです。

  1. SQL*Plusで、現在のコンテナがPDBであることを確認します。

    「SQL*Plusを使用したPDBへの接続」を参照してください。

  2. DBMS_SERVICEパッケージ内の適切なサブプログラムを実行します。

注意:

データベースがOracle RestartまたはOracle Clusterwareで管理されている場合は、SRVCTLユーティリティを使用してサービスを管理します。DBMS_SERVICEパッケージは使用しないでください。

例43-17 SRVCTLユーティリティを使用したPDBのサービスの作成

この例では、DB_UNIQUE_NAME mycdbで指定されたCDB内のPDB salespdbsalesrepサービスを追加します。

srvctl add service -db mycdb -service salesrep -pdb salespdb

例43-18 SRVCTLユーティリティを使用したサービスのPDBプロパティの変更

この例では、DB_UNIQUE_NAME mycdbで指定されたCDBでsalesrepサービスを変更して、このサービスをhrpdb PDBに関連付けます。

srvctl modify service -db mycdb -service salesrep -pdb hrpdb

例43-19 SRVCTLユーティリティを使用したサービスの削除

この例では、DB_UNIQUE_NAME mycdbで指定されたCDBでsalesrepサービスを削除します。

srvctl remove service -db mycdb -service salesrep

例43-20 DBMS_SERVICEパッケージを使用したPDBのサービスの作成

この例では、現在のPDBにsalesrepサービスを作成します。

BEGIN
  DBMS_SERVICE.CREATE_SERVICE(
    service_name => 'salesrep',
    network_name => 'salesrep.example.com');
END;
/

サービスのPDBプロパティが現在のコンテナに設定されます。たとえば、現在のコンテナがsalespdb PDBの場合、サービスのPDBプロパティはsalespdbになります。

例43-21 DBMS_SERVICEパッケージを使用したサービスの削除

この例では、現在のPDBのsalesrepサービスを削除します。

BEGIN
  DBMS_SERVICE.DELETE_SERVICE(
    service_name => 'salesrep');
END;
/

関連項目:

  • Oracle Databaseの自動再起動の構成

  • 例45-9

  • DBMS_SERVICEパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

  • Oracle Real Application Clusters (Oracle RAC)環境でのサービスの作成の詳細は、『Oracle Database 2日でReal Application Clustersガイド』および『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。

43.6 PDBをリフレッシュする

リフレッシュ可能なクローンとして作成されたPDBをリフレッシュできます。

PDBを手動でリフレッシュする場合、最後のリフレッシュ以降にソースPDBに対して行った変更は、リフレッシュされているPDBに伝播されます。自動リフレッシュが構成されているPDBを手動でリフレッシュできます。

PDBをリフレッシュするには、REFRESH MODE MANUALまたはREFRESH MODE EVERY minutes句を含めてPDBがクローンとして作成されている必要があります。
  1. SQL*Plusで、現在のコンテナがリフレッシュ対象のPDBであることを確認します。
  2. PDBがクローズされていない場合は、PDBをクローズします。たとえば、次のSQL文を発行します。
    ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;
  3. 次のSQL文を発行します。
    ALTER PLUGGABLE DATABASE REFRESH;

43.7 参照先PDBのリスナー設定の変更

プロキシPDBによって参照されているPDBは参照先PDBと呼ばれます。参照先PDBのリスナーのポートまたはホスト名が変更された場合は、プロキシPDBが引き続き正しく機能するように参照先PDBのリスナー設定をリセットする必要があります。

43.7.1 参照PDBのリスナー・ホスト名の変更

参照先PDBのリスナーのホスト名が変更された場合は、ALTER PLUGGABLE DATABASE CONTAINERS HOST文を実行して、プロキシPDBが引き続き正しく機能するように参照先PDBのホスト名をリセットする必要があります。

プロキシPDBは、PDBの作成中に、データベース・リンクを使用してその参照先PDBと通信を確立します。通信が確立されると、プロキシPDBはデータベース・リンクを使用せずに参照先PDBと直接通信するため、データベース・リンクを削除できます。参照先PDBのリスナーのホスト名が変更された場合、各プロキシPDBは参照先PDBと通信を再確立する必要があります。

参照先PDBのリスナー・ホスト名はデータベース・プロパティです。設定されている場合は、DATABASE_PROPERTIESデータ・ディクショナリ・ビューを問い合せることで現在の設定を表示できます。

現行ユーザーは、ALTER DATABASEシステム権限を持っている必要があり、その権限は共通に付与されているか、またはPDBでローカルに付与されている必要があります。
  1. SQL*Plusで、現在のコンテナが参照先PDBであることを確認します。
    「SQL*Plusを使用したPDBへの接続」を参照してください。
  2. ALTER PLUGGABLE DATABASE CONTAINERS HOST文を実行して新しいホスト名を指定するか、RESETキーワードを指定してホスト名を参照先PDBのホスト名であるデフォルト設定に戻します。
  3. 参照先PDBを参照するプロキシPDBを削除して再作成し、各プロキシPDBと参照先PDBの通信を再確立します。

例43-22 参照先PDBのリスナー・ホスト名の変更

この例では、参照先PDBのホスト名をmyhost.example.comに変更しています。

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

例43-23 リスナー・ホスト名のデフォルト値へのリセット

この例は、参照先PDBのホスト名をデフォルト値にリセットしています。デフォルト値は参照先PDBのホスト名です。

ALTER PLUGGABLE DATABASE CONTAINERS HOST RESET;

43.7.2 参照先PDBのリスナー・ポート番号の変更

参照先PDBのリスナーのポート番号が変更された場合は、ALTER PLUGGABLE DATABASE CONTAINERS PORT文を実行して、プロキシPDBが引き続き正しく機能するように参照先PDBのポート番号をリセットする必要があります。

プロキシPDBは、PDBの作成中に、データベース・リンクを使用してその参照先PDBと通信を確立します。通信が確立されると、プロキシPDBはデータベース・リンクを使用せずに参照先PDBと直接通信するため、データベース・リンクを削除できます。参照先PDBのリスナーのポート番号が変更された場合、各プロキシPDBは参照先PDBと通信を再確立する必要があります。

参照先PDBのリスナー・ポート番号はデータベース・プロパティです。設定されている場合は、DATABASE_PROPERTIESデータ・ディクショナリ・ビューを問い合せることで現在の設定を表示できます。

現行ユーザーは、ALTER DATABASEシステム権限を持っている必要があり、その権限は共通に付与されているか、またはPDBでローカルに付与されている必要があります。
  1. SQL*Plusで、現在のコンテナが参照先PDBであることを確認します。
    「SQL*Plusを使用したPDBへの接続」を参照してください。
  2. ALTER PLUGGABLE DATABASE CONTAINERS PORT文を実行して新しいポート番号を指定するか、RESETキーワードを指定してポート番号をデフォルト設定(1521)に戻します。
  3. 参照先PDBを参照するプロキシPDBを削除して再作成し、各プロキシPDBと参照先PDBの通信を再確立します。

例43-24 参照先PDBのリスナー・ポート番号の変更

この例では、参照先PDBのポート番号を1543に変更しています。

ALTER PLUGGABLE DATABASE CONTAINERS PORT=1543;

例43-25 リスナー・ポート番号のデフォルト値へのリセット

この例は、参照先PDBのポート番号をデフォルト値にリセットしています。ポート番号のデフォルト値は1521です。

ALTER PLUGGABLE DATABASE CONTAINERS PORT RESET;