SQL*PlusでのPDBの管理には、PDBへの接続、PDBの変更、PDBに関連付けられたサービスの管理などのタスクが含まれます。
プラガブル・データベース(PDB)の管理には、非CDBの管理に必要なタスクのサブセットが含まれます。
タスクのこのサブセットは、大半がPDBと非CDBで同じですが、一部は異なります。たとえば、PDBのオープン・モードを変更する場合に違いがあります。また、PDB管理者は、単一のPDBの管理に限定され、マルチテナント・コンテナ・データベース(CDB)内の他のPDBは影響を受けません。
他の管理タスクは、PDBと非CDBで同じです。表42-1は、これらのタスクの一部について説明しています。
表42-1 PDBと非CDBに共通する管理タスク
タスク | 説明 | 追加情報 |
---|---|---|
表領域の管理 |
PDBの表領域を作成、変更および削除できます。各PDBのデフォルト表領域およびデフォルト表領域タイプを指定できます。また、各PDBのデフォルト一時表領域があります。必要に応じて、個々のPDBで使用する追加の一時表領域を作成できます。 |
|
データファイルおよび一時ファイルの管理 |
各PDBには独自のデータファイルがあります。非CDBで管理しているのと同じ方法で、データファイルおよび一時ファイルを管理できます。 |
|
スキーマ・オブジェクトの管理 |
非CDBで行うのと同じ方法で、PDB内のスキーマ・オブジェクトを作成、変更および削除できます。特定のPDBで起動するトリガーを作成することもできます。 CDBのデータベース・リンクを管理する場合、ルートには一意のグローバル・データベース名があり、各PDBも同様です。ルートのグローバル名は、 |
CDBでのトリガーの作成の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。 |
PDBを管理する場合、ALTER
DATABASE
、ALTER
PLUGGABLE
DATABASE
またはALTER
SYSTEM
文を使用してPDBを変更できます。また、PDBでDDL文を実行することもできます。
また、現在のコンテナがPDBである場合に実行できない管理タスクを理解することも重要です。次に、現在のコンテナがルートである場合にCDB全体またはルートで共通ユーザーが実行する一部の管理タスクを示します。
CDBインスタンスの起動および停止
ALTER
DATABASE
文を使用したCDBまたはルートの変更
ALTER
SYSTEM
文を使用したCDBまたはルートの変更
CDBまたはルートでのデータ定義言語(DDL)文の実行
次のコンポーネントの管理:
プロセス
メモリー
エラーおよびアラート
診断データ
制御ファイル
オンラインREDOログ・ファイルおよびアーカイブREDOログ・ファイル
元に戻す
PDBの作成、接続、切断および削除
現在のコンテナがルートである共通ユーザーは、1つ以上のPDBのオープン・モードを変更することもできます。このタスクおよびCDBまたはルートの管理に関連するその他のタスクの詳細は、「SQL*Plusを使用したCDBの管理」を参照してください。
現在のコンテナがPDBである共通ユーザーまたはローカル・ユーザーは、現在のPDBのオープン・モードを変更できます。このタスクの詳細は、「PDBの変更」を参照してください。
関連項目:
いくつかの手法を使用して、SQL*Plus CONNECT
コマンドでPDBに接続できます。
この項では、SQL*Plusで非CDBに接続する方法を理解していることを想定しています。詳細は、「SQL*Plusを使用したデータベースへの接続」を参照してください。
次の手法を使用して、SQL*Plus CONNECT
コマンドでPDBに接続できます。
オペレーティング・システム認証を使用したローカル接続
簡易接続を使用したデータベース接続
サービス名を使用したデータベース接続
次の前提条件を満たしている必要があります。
PDBに接続するユーザーは、そのPDBでCREATE
SESSION
権限を付与されている必要があります。
SYSDBA
、SYSOPER
、SYSBACKUP
またはSYSDG
の管理権限を持たないユーザーとしてPDBに接続するには、PDBをオープンにしている必要があります。PDBのオープン・モードの変更の詳細は、「PDBのオープン・モードの変更」および「PDBの変更」を参照してください。
注意:
この項では、PDBに接続するユーザーはローカル・ユーザーであると想定しています。共通ユーザーとしてPDBに接続することも可能で、共通ユーザーとしてルートに接続してからPDBに切り替えることができます。
SQL*Plus CONNECTコマンドを使用してPDBに接続する手順は、次のとおりです。
SQL*Plusを起動できるよう、環境を構成します。
「SQL*Plusを使用したデータベースへの接続」を参照してください。
/NOLOG
引数を使用してSQL*Plusを起動します。
sqlplus /nolog
簡易接続またはネット・サービス名を使用してCONNECT
コマンドを発行し、PDBに接続します。
PDBに接続するには、PDB
プロパティを指定してサービスに接続します。
例42-1 PDBのネット・サービス名を使用したSQL*PlusでのPDBへの接続
次のコマンドでは、hrapp
サービスを使用してhr
ユーザーに接続します。hrapp
サービスには、hrpdb
PDBのPDB
プロパティが含まれています。この例では、hrapp
サービスのネット・サービス名を持つようにクライアントが設定されていると想定しています。
CONNECT hr@hrapp
他の例は、「手順4: SQL*PlusのCONNECTコマンドの発行」を参照してください。
関連項目:
共通ユーザーとしてPDBに接続する方法の詳細は、「SQL*Plusを使用したCDB内のコンテナへのアクセス」を参照してください
PDBは、ALTER PLUGGABLE DATABASE
文とSQL*PlusのSTARTUP
およびSHUTDOWN
コマンドを使用して変更できます。
ALTER
PLUGGABLE
DATABASE
SQL文で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に接続しているセッションが使用できる共有一時表領域の記憶域の量に対する制限も設定できます。制限に達すると、PDBに接続しているセッションは、共有一時表領域で追加の記憶域を使用できなくなります。
pdb_change_state_clause
この句によって、現在のPDBのオープン・モードが変更されます。
オプションのRESTRICTED
キーワードを指定すると、PDBへのアクセスはPDB内でRESTRICTED
SESSION
権限を持つユーザーに限られます。
この句でFORCE
を指定すると、ALTER
PLUGGABLE
DATABASE
文のセマンティクスが変わるため、現在閉じているPDBをオープンする以外に、すでに開いている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を制限モードでオープンする必要があります。
関連項目:
ロギング属性の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
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を制限モードでオープンする必要があります。
関連項目:
強制ロギング・モードおよび強制ロギングなしモードの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
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_clause、pdb_change_state_clause、logging_clause,、pdb_recovery_clauseなど、PDBに固有の句を含めることはできません。
関連項目:
ALTER
PLUGGABLE
DATABASE
文を使用して、単一PDBの属性を変更できます。
単一PDBの属性を変更する句の詳細は、「ALTER PLUGGABLE DATABASE文を使用したPDBの変更の概要」を参照してください。現在のコンテナがPDBである場合、これらの句のいずれかが含まれたALTER
PLUGGABLE
DATABASE
文によりPDBが変更されます。この変更により、PDBのルートのデフォルト設定が上書きされます。この変更は、ルートまたは他のPDBには影響しません。
次の前提条件を満たしている必要があります。
PDBのオープン・モードをマウントからオープンに、またはオープンからマウントに変更するには、現在のユーザーにSYSDBA
、SYSOPER
、SYSBACKUP
またはSYSDG
管理権限が必要であり、その権限は共通に付与されているか、またはPDBでローカルに付与されている必要があります。ユーザーは、接続時にAS
SYSDBA
、AS
SYSOPER
、AS
SYSBACKUP
またはAS
SYSDG
をそれぞれ使用して、権限を行使する必要があります。
ALTER
PLUGGABLE
DATABASE
文を使用して実行される他のすべての操作については、現在のユーザーにALTER
DATABASE
システム権限が必要であり、その権限は共通に付与されているか、またはPDBでローカルに付与されている必要があります。
PDBをクローズするには、そのPDBがオープンされている必要があります。
注意:
この項では、ALTER
PLUGGABLE
DATABASE
文を使用したPDBのグローバル・データベース名の変更については説明していません。これを行うには、「PDBのグローバル・データベース名の変更」を参照してください。
ALTER
PLUGGABLE
DATABASE
文を使用してPDBを変更する手順は、次のとおりです。
SQL*Plusで、現在のコンテナがPDBであることを確認します。
「SQL*Plusを使用したPDBへの接続」を参照してください。
ALTER
PLUGGABLE
DATABASE
文を実行します。
次の例では、単一PDBを変更します。
例42-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;
例42-3 PDBのデータファイルのオンライン化
このALTER
PLUGGABLE
DATABASE
文では、database_file_clauseを使用して、/u03/oracle/pdb1_01.dbfデータファイルをオンラインにします。
ALTER PLUGGABLE DATABASE DATAFILE '/u03/oracle/pdb1_01.dbf' ONLINE;
例42-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のデフォルトの表領域または一時表領域を使用します。
例42-5 PDBのデフォルト表領域タイプの変更
次のALTER
DATABASE
文では、SET
DEFAULT
TABLESPACE
句を使用して、PDBのデフォルトの表領域タイプをbigfileに変更します。
ALTER PLUGGABLE DATABASE SET DEFAULT BIGFILE TABLESPACE;
例42-6 PDBのストレージ制限の設定
次の文では、PDBに属しているすべての表領域のストレージ制限を2GBに設定します。
ALTER PLUGGABLE DATABASE STORAGE(MAXSIZE 2G);
次の文では、PDBに属している表領域にストレージ制限がないことを指定します。
ALTER PLUGGABLE DATABASE STORAGE(MAXSIZE UNLIMITED);
次の文では、PDBに属している表領域にストレージ制限がないこと、およびPDBに接続しているセッションが使用できる共有一時表領域にストレージ制限がないことを指定します。
ALTER PLUGGABLE DATABASE STORAGE UNLIMITED;
例42-7 PDBのロギング属性の設定
PDBが制限モードでオープンしている場合、次の文では、PDBにNOLOGGING
属性を指定します。
ALTER PLUGGABLE DATABASE NOLOGGING;
注意:
この例では、Oracle Database 12c Release 1 (12.1.0.2)以上が必要です。
例42-8 PDBの強制ロギング・モードの設定
次の文では、PDBに対して強制ロギング・モードを有効にします。
ALTER PLUGGABLE DATABASE ENABLE FORCE LOGGING;
注意:
この例では、Oracle Database 12c Release 1 (12.1.0.2)以上が必要です。
例42-9 PDBのデフォルト・エディションの設定
この例では、現在のPDBのデフォルト・エディションをPDB1E3
に設定します。
ALTER PLUGGABLE DATABASE DEFAULT EDITION = PDB1E3;
関連項目:
ALTER
PLUGGABLE
DATABASE
文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
エディションに基づく再定義の詳細な説明は、『Oracle Database開発ガイド』を参照してください。
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のグローバル・データベース名を変更するには、次の手順に従います。
SQL*Plusで、現在のコンテナがPDBであることを確認します。
「SQL*Plusを使用したPDBへの接続」を参照してください。
ALTER
PLUGGABLE
DATABASE
RENAME
GLOBAL_NAME
TO
文を実行します。
次の例は、PDBのグローバル・データベース名をsalespdb.example.com
に変更します。
ALTER PLUGGABLE DATABASE RENAME GLOBAL_NAME TO salespdb.example.com;
PDBをクローズします。
読取り/書込みモードで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の構成も変更する必要がある場合があります。
関連項目:
PDBのオープン・モードの変更の詳細は、「PDBの変更」を参照してください
PDBおよびデータベース・サービスの詳細は、「PDBに関連付けられているサービスの管理」を参照してください
現在のコンテナがPDBの場合、SQL*PlusのSTARTUP
コマンドを使用してPDBをオープンし、SQL*PlusのSHUTDOWN
コマンドを使用してPDBをクローズできます。
現在のコンテナがPDBである場合、SQL*PlusのSTARTUP
コマンドでPDBをオープンできます。
STARTUP
コマンドの次のオプションを使用して、PDBをオープンします。
FORCE
読取り/書込みモードで再オープンする前に、オープン状態のPDBをクローズします。このオプションが指定されている場合、他のオプションは使用できません。
RESTRICT
PDBでRESTRICTED
SESSION
システム権限を持つユーザーのみがそのPDBにアクセスできるようにします。
OPEN
READ
WRITE
もOPEN
READ
ONLY
も指定されず、RESTRICT
が指定されている場合、PDBは、属しているCDBがフィジカル・スタンバイ・データベースのときに読取り専用でオープンされます。そうでないときは、PDBは読取り/書込みモードでオープンされます。
OPEN
open_pdb_options
PDBを読取り/書込みモードまたは読取り専用モードでオープンします。OPEN
READ
WRITE
またはOPEN
READ
ONLY
を指定します。RESTRICT
が指定されていない場合、READ
WRITE
が常にデフォルトです。
現在のコンテナがPDBの場合にSTARTUP
コマンドを発行するには、次の前提条件を満たしている必要があります。
現行ユーザーには、SYSDBA
、SYSOPER
、SYSBACKUP
またはSYSDG
管理権限があり、その権限は共通に付与されているか、またはPDBでローカルで付与されている必要があります。ユーザーは、接続時にAS
SYSDBA
、AS
SYSOPER
、AS
SYSBACKUP
またはAS
SYSDG
をそれぞれ使用して、権限を行使する必要があります。
FORCE
オプションを使用する場合を除き、PDBをオープンするには、PDBがマウント・モードである必要があります。
PDBをマウント・モードにするには、そのPDBが読取り専用オープン・モードまたは読取り/書込みオープン・モードであることが必要です。
STARTUP
コマンドを使用してPDBを変更する手順は、次のとおりです。
SQL*Plusで、現在のコンテナがPDBであることを確認します。
「SQL*Plusを使用したPDBへの接続」を参照してください。
STARTUP
コマンドを実行します。
関連項目:
『SQL*Plus ユーザーズ・ガイドおよびリファレンス』
例42-10 STARTUPコマンドを使用してPDBを読取り/書込みモードでオープンする方法
STARTUP OPEN
例42-11 STARTUPコマンドを使用してPDBを読取り専用モードでオープンする方法
STARTUP OPEN READ ONLY
例42-12 STARTUPコマンドを使用してPDBを読取り専用制限モードでオープンする方法
STARTUP RESTRICT OPEN READ ONLY
例42-13 STARTUPコマンドおよびFORCEオプションを使用してPDBを読取り/書込みモードでオープンする方法
この例では、PDBが現在オープンしていると想定しています。FORCE
オプションによって、PDBがクローズされ、その後、読取り/書込みモードでオープンされます。
STARTUP FORCE
現在のコンテナがPDBである場合、SQL*PlusのSHUTDOWN
コマンドでPDBをクローズできます。
SHUTDOWN
コマンドがPDBで正常に発行されると、PDBはマウント・モードになります。
IMMEDIATE
を指定しない場合、PDBはNORMALモードで停止されます。IMMEDIATE
が指定されている場合、PDBはIMMEDIATEモードで停止されます。
現在のコンテナがPDBである場合にSHUTDOWN
コマンドを発行するには、次の前提条件を満たしている必要があります。
現行ユーザーには、SYSDBA
、SYSOPER
、SYSBACKUP
またはSYSDG
管理権限があり、その権限は共通に付与されているか、またはPDBでローカルで付与されている必要があります。ユーザーは、接続時にAS
SYSDBA
、AS
SYSOPER
、AS
SYSBACKUP
またはAS
SYSDG
をそれぞれ使用して、権限を行使する必要があります。
PDBをクローズするには、そのPDBがオープンされている必要があります。
SHUTDOWN
コマンドを使用してPDBを変更する手順は、次のとおりです。
SQL*Plusで、現在のコンテナがPDBであることを確認します。
「SQL*Plusを使用したPDBへの接続」を参照してください。
SHUTDOWN
コマンドを実行します。
注意:
現在のコンテナがPDBの場合、SHUTDOWN
コマンドは、CDBインスタンスではなくPDBのみをクローズします。
PDBには、非CDBのSHUTDOWN
TRANSACTIONAL
またはSHUTDOWN
ABORT
コマンドと同等のSHUTDOWN
コマンドはありません。
関連項目:
停止モードの詳細は、「データベースの停止」を参照してください
『SQL*Plus ユーザーズ・ガイドおよびリファレンス』
例42-14 SHUTDOWN IMMEDIATEコマンドを使用してPDBをクローズする方法
SHUTDOWN IMMEDIATE
ALTER SYSTEM
文を使用してPDBを変更できます。
ALTER
SYSTEM
文によって、PDBを動的に変更できます。PDBが動作する方法を変更する場合は、ALTER
SYSTEM
文を発行できます。
現在のコンテナがPDBである場合、次のALTER
SYSTEM
文を実行できます。
ALTER SYSTEM FLUSH SHARED_POOL
ALTER SYSTEM FLUSH BUFFER_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設定 | 動作 |
---|---|
|
初期化パラメータ設定は、メモリーで変更され、PDBで即時に有効になります。新しい設定は、PDBにのみ影響を及ぼします。 この設定によって、次のいずれかの場合、ルートで設定された値に戻ります。
|
|
初期化パラメータ設定は、PDBに対して変更されて永続的に格納されます。新しい設定は、次の場合に有効になります。
これらの場合、新しい設定はPDBにのみ影響を及ぼします。 |
|
初期化パラメータ設定は、メモリーで変更され、PDBに対して変更されて永続的に格納されます。新しい設定はPDBで即時に有効になり、PDBが停止して再オープンされた後、またはCDBが停止して再オープンされた後も保持されます。新しい設定は、PDBにのみ影響を及ぼします。 |
PDBがCDBから切断されると、SCOPE=BOTH
またはSCOPE=SPFILE
を使用してPDBに指定された初期化パラメータの値は、PDBのXMLメタデータ・ファイルに追加されます。これらの値は、PDBがCDBに接続したときにPDBでリストアされます。
注意:
テキスト初期化パラメータ・ファイル(PFILE)には、PDB固有のパラメータ値を含めることはできません。
関連項目:
『Oracle Database SQL言語リファレンス』
ALTER SYSTEM
文を使用してPDBを変更できます。
現行ユーザーは、次の権限を付与されている必要があり、これらの権限は、共通で付与されているか、PDBでローカルに付与されている必要があります。
CREATE
SESSION
ALTER
SYSTEM
ALTER
SYSTEM
を使用してPDBを変更する手順は、次のとおりです。
SQL*Plusで、現在のコンテナがPDBであることを確認します。
「SQL*Plusを使用したPDBへの接続」を参照してください。
ALTER
SYSTEM
文を実行します。
例42-15 PDBでのセッション制限の有効化
PDBでセッションを制限するには、次の文を発行します。
ALTER SYSTEM ENABLE RESTRICTED SESSION;
例42-16 PDBの統計収集レベルの変更
次のALTER
SYSTEM
文によって、現在のPDBのSTATISTICS_LEVEL
初期化パラメータがALL
に設定されます。
ALTER SYSTEM SET STATISTICS_LEVEL = ALL SCOPE = MEMORY;
関連項目:
『Oracle Database SQL言語リファレンス』
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 RestartまたはOracle Clusterwareで管理されている場合、SRVCTLユーティリティを使用して、クローズするPDBのPDBプロパティを指定してサービスを開始すると、PDBは、サービスが開始されたノードにおいて読取り/書込みモードでオープンされます。ただし、PDBサービスを停止しても、PDBのオープン・モードは変更されません。PDBのオープン・モードの変更の詳細は、「ALTER PLUGGABLE DATABASE文を使用したPDBの変更」を参照してください。
PDBを切断または削除した場合、切断または削除された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プロパティを使用して作成、変更または削除する手順は、次のとおりです。
正しいユーザー・アカウントを使用してホスト・コンピュータにログインし、SRVCTLを正しいOracleホームから確実に実行します。
サービスを作成または変更するには、add
service
コマンドを実行し、-pdb
パラメータでPDBを指定します。サービスのPDB
プロパティを変更する場合は、modify
service
コマンドを実行し、-pdb
パラメータでPDBを指定します。サービスを削除するには、remove
service
コマンドを実行します。
DBMS_SERVICEパッケージを使用してPDBのサービスを作成または削除する手順は、次のとおりです。
SQL*Plusで、現在のコンテナがPDBであることを確認します。
「SQL*Plusを使用したPDBへの接続」を参照してください。
DBMS_SERVICE
パッケージ内の適切なサブプログラムを実行します。
注意:
データベースがOracle RestartまたはOracle Clusterwareで管理されている場合は、SRVCTLユーティリティを使用してサービスを管理します。DBMS_SERVICE
パッケージは使用しないでください。
例42-17 SRVCTLユーティリティを使用したPDBのサービスの作成
この例では、DB_UNIQUE_NAME
mycdb
で指定されたCDB内のPDB salespdb
にsalesrep
サービスを追加します。
srvctl add service -db mycdb -service salesrep -pdb salespdb
例42-18 SRVCTLユーティリティを使用したサービスのPDBプロパティの変更
この例では、DB_UNIQUE_NAME
mycdb
で指定されたCDBでsalesrep
サービスを変更して、このサービスをhrpdb
PDBに関連付けます。
srvctl modify service -db mycdb -service salesrep -pdb hrpdb
例42-19 SRVCTLユーティリティを使用したサービスの削除
この例では、DB_UNIQUE_NAME
mycdb
で指定されたCDBでsalesrep
サービスを削除します。
srvctl remove service -db mycdb -service salesrep
例42-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
になります。
例42-21 DBMS_SERVICEパッケージを使用したサービスの削除
この例では、現在のPDBのsalesrep
サービスを削除します。
BEGIN DBMS_SERVICE.DELETE_SERVICE( service_name => 'salesrep'); END; /
関連項目:
DBMS_SERVICE
パッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
Oracle Real Application Clusters (Oracle RAC)環境でのサービスの作成の詳細は、『Oracle Database 2日でReal Application Clustersガイド』および『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。