21 マルチテナント環境でのデータベース・ユーティリティの使用
マルチテナント環境で、Oracle Data Pump、DBNEWID、Oracle LogMinerなどのユーティリティを使用できます。
- CDBでのデータのインポートおよびエクスポート
Oracle Data Pumpは、データベース間でデータとメタデータの高速移動を可能にするテクノロジです。 - CDBでのLogMinerの使用
マルチテナント・コンテナ・データベース(CDB)でLogMinerを使用できます。 - DBNEWIDのCDBおよびPDBに関する考慮事項
DBNEWIDパラメータであるPDB
を使用すると、プラガブル・データベース(PDB)のDBIDを変更できます。
親トピック: マルチテナント環境でのOracle機能の使用
CDBでのデータのインポートおよびエクスポート
Oracle Data Pumpテクノロジを使用すると、データおよびメタデータをデータベース間で非常に高速に移動できます。
- マルチテナント環境でのデータ・ポンプの使用について
一般的に、PDBでのデータ・ポンプの使用は、非CDBでのデータ・ポンプの使用と同じです。 - データ・ポンプを使用したCDBへのデータの移動
空のPDBを作成した後、Oracle Data Pumpの全体モード・エクスポートおよびインポート操作を使用して、データをPDBに移動できます。 - データ・ポンプを使用したCDB内またはCDB間のPDBの移動
PDBに対するデータ・ポンプ・エクスポートおよびインポート操作は、共通ユーザーの処理方法を除き、非CDBに対する操作と同じです。
親トピック: マルチテナント環境でのデータベース・ユーティリティの使用
マルチテナント環境でのデータ・ポンプの使用について
一般的に、PDBでデータ・ポンプを使用することは、非CDBでデータ・ポンプを使用することと同じです。
マルチテナント・コンテナ・データベース(CDB)は、0、1または多数のユーザー作成のプラガブル・データベース(PDB)を含むOracleのデータベースです。PDBは、スキーマ、スキーマ・オブジェクトおよび非スキーマ・オブジェクトのポータブル・セットで、Oracle Netクライアントからは、非CDBとして表示されます。非CDBとは、CDBではないOracle Databaseです。
データ・ポンプを使用して、次のシナリオでデータベースの一部またはすべてを移行できます。
-
非CDBからPDBへ
-
同じCDBまたは異なるCDB内のPDB間
-
PDBから非CDBへ
ノート:
データ・ポンプでは、CDB全体にわたる操作はサポートされていません。CDBのルートまたはシード・データベースに接続している場合、データ・ポンプにより次の警告が発行されます。
ORA-39357: Warning: Oracle Data Pump operations are not typically needed when connected to the root or seed of a container database.
親トピック: CDBでのデータのインポートおよびエクスポート
データ・ポンプを使用したCDBへのデータの移動
空のPDBを作成した後、Oracle Data Pumpの全体モード・エクスポートおよびインポート操作を使用して、データをPDBに移動できます。
データはトランスポータブル・オプションの有無にかかわらずインポートできます。トランスポータブル・オプションを全体モード・エクスポートまたはインポートで使用する場合、全体トランスポータブル・エクスポート/インポートと呼ばれます。
トランスポータブル・オプションが使用される場合、エクスポートおよびインポートでは、トランスポータブル表領域のデータ移動と従来のデータ移動の両方を使用しますが、後者はSYSTEM
やSYSAUX
などの非トランスポータブル表領域に存在する表が対象です。トランスポータブル・オプションを使用すると、表データをアンロードおよび再ロードする必要と、ユーザー表領域の索引構造を再作成する必要がなくなるため、エクスポート時間と(特に)インポート時間を短縮できます。
データ・ポンプを使用してCDBにデータを移動する場合は、次の要件に注意してください。
-
マルチテナント環境を管理するには、
CDB_DBA
ロールを持っている必要があります。 -
Oracle Database 11.2.0.2以前からの全体データベース・エクスポートは、Oracle Database 12c (CDBまたは非CDB)にインポートされる場合があります。ただし、登録したオプションおよびコンポーネントの情報がエクスポートに含まれるように、まずソース・データベースをOracle Database 11gリリース2 (11.2.0.3以降)にアップグレードすることをお薦めします。
-
全体データベース・エクスポートまたは全体トランスポータブル・データベース・エクスポートのいずれかを使用して、Oracle Database 11gリリース2 (11.2.0.3以上)をCDB(または非CDB)に移行する場合、Oracle Database 12cにインポートできるダンプ・ファイルを生成するためにデータ・ポンプ・エクスポート・パラメータ
VERSION=12
を設定する必要があります。VERSION=12
を設定しない場合、生成したエクスポート・ファイルには、登録したデータベース・オプションおよびコンポーネントの完全な情報は含まれません。 -
ネットワーク・ベースの全体トランスポータブル・インポートでは、
FULL=YES
、TRANSPORTABLE=ALWAYS
およびTRANSPORT_DATAFILES=datafile_name
パラメータを使用する必要があります。ソース・データベースがOracle Database 11gリリース11.2.0.3以上で、Oracle Database 12cリリース1 (12.1)より前の場合、VERSION=12
パラメータも必要です。 -
ファイル・ベースの全体トランスポータブル・インポートでは、
TRANSPORT_DATAFILES=datafile_name
パラメータのみを使用する必要があります。データ・ポンプ・インポートでは、TRANSPORTABLE=ALWAYS
およびFULL=YES
パラメータの存在が推測されます。 -
Oracle Database 12cリリース2 (12.2)以降、マルチテナント・コンテナ・データベース(CDB)環境では、CDBの各PDBに対する一意のパスとして、デフォルトのデータ・ポンプ・ディレクトリ・オブジェクト
DATA_PUMP_DIR
が定義されます。この一意のパスは、CREATE PLUGGABLE DATABASE
文のPATH_PREFIX
句が相対パスに定義されているかどうかに関係なく、定義されます。 -
Oracle Database19c以降では、
impdp
のcredential
パラメータに、オブジェクト・ストア・バケットへのアクセスに必要なユーザー名とパスワードを含む資格証明オブジェクトの名前を指定します。DEFAULT_CREDENTIAL
という名前のPDBプロパティを使用して、デフォルトの資格証明を指定することもできます。デフォルトの資格証明を使用してimpdb
を実行する場合は、ダンプ・ファイル名の前にDEFAULT_CREDENTIAL:
を付け、credential
パラメータは指定しません。
例21-1 PDBへの表のインポート
エクスポート/インポート操作用に特定のPDBを指定するには、データ・ポンプの開始時に、接続識別子を接続文字列に指定します。たとえば、pdb1
というPDBにデータをインポートするには、データ・ポンプ・コマンドラインで次のように入力します。
impdp hr@pdb1 DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp TABLES=employees
例21-2 データのインポート時の資格証明の指定
この例では、次に示すように、DBMS_CREDENTIAL.CREATE_CREDENTIAL
を使用してHR_CRED
という名前の資格証明を作成していることを前提としています。
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'HR_CRED',
username => 'atpc_user@oracle.com',
password => 'password'
);
END;
/
次のコマンドは、資格証明HR_CRED
を指定し、オブジェクト・ストアに格納されているファイルを指定します。ファイルのURLはhttps://example.com/ostore/dnfs/myt.dmp
です。
impdp hr@pdb1 \
table_exists_action=replace \
credential=HR_CRED \
parallel=16 \
dumpfile=https://example.com/ostore/dnfs/myt.dmp
例21-3 デフォルトの資格証明を使用したデータのインポート
-
次に示すように、
DBMS_CREDENTIAL.CREATE_CREDENTIAL
を使用して、HR_CRED
という名前の資格証明を作成します。BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'HR_CRED', username => 'atpc_user@oracle.com', password => 'password' ); END; /
-
PDBプロパティ
DEFAULT_CREDENTIAL
を次のように設定します。ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'ADMIN.HR_CRED'
-
次のコマンドは、ダンプ・ファイルの場所
https://example.com/ostore/dnfs/myt.dmp
の接頭辞として、デフォルトの資格証明を指定します。impdp hr@pdb1 \ table_exists_action=replace \ parallel=16 \ dumpfile=default_credential:https://example.com/ostore/dnfs/myt.dmp
credential
パラメータは指定しません。
関連項目:
-
オブジェクト・ストアへのアクセスに必要なSSL認証の構成方法を学習するには、Oracle『Oracle Databaseセキュリティ・ガイド』を参照
-
データ・ポンプ・インポートを使用してファイルをオブジェクト・ストアにロードする方法について学習するには、『Oracle Databaseユーティリティ』を参照
親トピック: CDBでのデータのインポートおよびエクスポート
データ・ポンプを使用したCDB内またはCDB間のPDBの移動
PDBに対するデータ・ポンプ・エクスポートおよびインポート操作は、共通ユーザーの処理方法を除き、非CDBに対する操作と同じです。
CDBで共通ユーザーを作成した場合、CDBのPDB内からそのユーザーの全データベースまたは特権スキーマをエクスポートすると、標準のCREATE USER C##common name
DDL文がインポート時に実行されます。ユーザー名の共通ユーザー接頭辞C##
が原因で、文は失敗します。次のエラー・メッセージが返されます。
ORA-65094:invalid local user or role name
エクスポート対象のPDBで、そのユーザーのスキーマにローカル・オブジェクトを作成してそれらをインポートする場合、同じ名前の共通ユーザーがすでにターゲットCDBインスタンスに存在することを確認するか、次のようにimpdp
コマンドでデータ・ポンプ・インポートのREMAP_SCHEMA
パラメータを使用します。
REMAP_SCHEMA=C##common name:local user name
CDBのLogMinerの使用
LogMinerは、マルチテナント・コンテナ・データベース(CDB)で使用できます。
次の項では、CDBと非CDBでLogMinerの使用時に注意する必要がある相違点について説明します。
ルート・コンテナにすべてのPDBのスーパーセットの文字セットが含まれている場合、LogMinerでは異なる文字セットのPDBを含むCDBがサポートされます。
マルチテナント環境を管理するには、CDB_DBA
ロールを持っている必要があります。
- CDBでのLogMiner V$ビューおよびDBAビュー
CDBでは、システムで実行されているLogMinerセッションの情報を表示するためにLogMinerによって使用されるビューに、CON_ID
という追加の列が含まれます。 - CDBでのV$LOGMNR_CONTENTSビュー
CDBでは、V$LOGMNR_CONTENTS
ビューとその関連機能はルート・データベースに制限されています。V$LOGMNR_CONTENTS
には、CDBを支援するいくつかの新しい列が存在します。 - CDBでのサプリメンタル・ロギングの有効化
CDBで、ALTER DATABASE
コマンドを使用してデータベース全体のサプリメンタル・ロギングを有効または無効にするための構文。 - CDBでのフラット・ファイル・ディクショナリの使用
単一のフラット・ファイルにCDB全体のディクショナリ・スナップショットを取得することはできません。個々のPDBに接続する必要があり、そのPDB専用のスナップショットをフラット・ファイルに取得できます。
親トピック: マルチテナント環境でのデータベース・ユーティリティの使用
CDBでのLogMiner V$ビューおよびDBAビュー
CDBでは、システムで実行されているLogMinerセッションの情報を表示するためにLogMinerによって使用されるビューに、CON_ID
という追加の列が含まれます。
CON_ID
列によって、情報が表示されるセッションに関連付けられたコンテナIDを識別します。プラガブル・データベース(PDB)のビューを問い合せると、データベースに関連付けられた情報のみが表示されます。この新しい動作の影響を受けるビューは次のとおりです。
-
V$LOGMNR_DICTIONARY_LOAD
-
V$LOGMNR_LATCH
-
V$LOGMNR_PROCESS
-
V$LOGMNR_SESSION
-
V$LOGMNR_STATS
ノート:
CDBをサポートするため、V$LOGMNR_CONTENTS
ビューには、CON_ID
以外にもいくつかの新しい列が含まれます。
次のDBAビューには、名前がCDBで始まる類似のCDBビューがあります。
ログ・ビューのタイプ | DBAビュー | CDBビュー |
---|---|---|
LogMinerログ・ビュー |
|
|
LogMinerパージ済ログ・ビュー |
|
|
LogMinerセッション・ログ・ビュー |
|
|
DBAビューには、問合せが行われたコンテナで定義されているセッションに関連する情報のみが表示されます。
CDBビューには、特定の行が表すデータを含むコンテナを識別する追加のCON_ID
列が含まれます。ルートからCDBビューを問い合せると、それらのビューを使用してすべてのコンテナに関する情報を参照できます。
親トピック: CDBのLogMinerの使用
CDBでのV$LOGMNR_CONTENTSビュー
CDBでは、V$LOGMNR_CONTENTS
ビューとその関連機能はルート・データベースに制限されています。V$LOGMNR_CONTENTS
には、CDBを支援するいくつかの新しい列が存在します。
-
CON_ID
: 問合せの実行元のコンテナに関連付けられたIDが含まれます。V$LOGMNR_CONTENTS
はルート・データベースに制限されるため、問合せがCDBで実行されると、この列は値1を返します。 -
SRC_CON_NAME
: PDBの名前。この情報は、マイニングがLogMinerディクショナリで実行される場合にのみ使用できます。 -
SRC_CON_ID
: REDOレコードを生成したPDBのコンテナID。この情報は、マイニングがLogMinerディクショナリで実行される場合にのみ使用できます。 -
SRC_CON_DBID
: PDBの識別子。この情報は、マイニングが現在のLogMinerディクショナリで実行される場合にのみ使用できます。 -
SRC_CON_GUID
: PDBに関連付けられたGUIDが含まれます。この情報は、マイニングが現在のLogMinerディクショナリで実行される場合にのみ使用できます。
親トピック: CDBのLogMinerの使用
CDBでのサプリメンタル・ロギングの有効化
CDBで、ALTER DATABASE
コマンドを使用してデータベース全体のサプリメンタル・ロギングを有効または無効にするための構文。
たとえば、サプリメンタル・ログ・データを追加または削除する場合は、次の構文を使用します。
ALTER DATABASE [ADD|DROP] SUPPLEMENTAL LOG DATA ...
次の点に注意してください。
-
CDBでは、
CDB$ROOT
から有効にしたサプリメンタル・ロギング・レベルは、CDB全体で有効になります。 -
少なくとも最小サプリメンタル・ロギングが
CDB$ROOT
で有効になっている場合、追加のサプリメンタル・ロギング・レベルをPDBレベルで有効にできます。 -
CDB$ROOT
からCDBレベルで有効にしたサプリメンタル・ロギング・レベルは、PDBレベルでは無効にできません。 -
CDB$ROOT
からすべてのサプリメンタル・ロギングを削除した場合、以前のPDBレベルの設定に関係なく、CDB全体ですべてのサプリメンタル・ロギングが無効になります。
CREATE TABLE
文とALTER TABLE
文で開始するサプリメンタル・ロギング操作は、CDBルートかPDBから実行できます。これらは適用先の表にのみ影響します。
親トピック: CDBのLogMinerの使用
CDBでのフラット・ファイル・ディクショナリの使用
単一のフラット・ファイルにCDB全体のディクショナリ・スナップショットを取得することはできません。個々のPDBに接続する必要があり、そのPDB専用のスナップショットをフラット・ファイルに取得できます。
したがって、フラット・ファイル・ディクショナリを使用する場合、データ・ディクショナリがフラット・ファイル内に含まれるPDBに関連付けられた変更を対象とするREDOログのみをマイニングできます。
親トピック: CDBのLogMinerの使用
DBNEWIDのCDBおよびPDBに関する考慮事項
DBNEWIDパラメータであるPDB
を使用すると、プラガブル・データベース(PDB)のDBIDを変更できます。
デフォルトでは、コンテナ・データベース(CDB)に対してDBNEWIDユーティリティを実行すると、そのCDBのみのDBIDが変更され、そのCDBに含まれるプラガブル・データベース(PDB)のDBIDは変更されません。このため、CDBをクローニングした場合などには、PDBのDBIDが重複するという問題が発生することがあります。
Oracle Database 12c リリース2 (12.2)からは、新しいDBNEWID PDB
パラメータを使用して、PDBのDBIDを変更できます。特定のPDBを指定することはできません。すべてのPDBのDBIDを新しくするか、どのPDBのDBIDも変更しないかのどちらかです。PDB
パラメータは、CDB環境にのみ適用可能です。このファイルは次のような形式です。
PDB=[ALL | NONE]
-
ALL
を指定した場合、CDBのDBIDが変更されるだけでなく、そのCDBに含まれるすべてのPDBのDBIDも変更されます。 -
NONE
(デフォルト)を指定すると、CDBのDBIDが変更されてもPDBのDBIDは変更されません。
PDB=ALL
の使用をお薦めしますが、下位互換性の理由からPDB=NONE
がデフォルトになっています。
親トピック: マルチテナント環境でのデータベース・ユーティリティの使用