この章では、次のタスクの手順を説明します。
データ・サブセッティング機能を使用するには、Oracle Data Masking and Subsetting Packライセンスが必要です。
注意: データ・サブセット化は、Oracle Databaseバージョン10.1以上でのみサポートされています。 |
注意: この章の手順は、Oracle Enterprise Manager Cloud Control 12.1以上のみに適用されます。 |
次の手順を使用すると、サブセット・データベースを作成できます。作成後、サブセット定義のプロパティの編集やサブセット定義のエクスポートなどの他のタスクを実行できるようになります。
Enterprise Manager Cloud ControlユーザーのEM_ALL_OPERATOR
データベース・ユーザーのSELECT_CATALOG_ROLE
データベース・ユーザーのSelect Any Dictionary権限
データ・サブセット定義を作成するには:
「エンタープライズ」メニューから「クオリティ管理」を選択し、次に「データ・サブセット定義」を選択します。
「データ・サブセット定義」ページで「アクション」メニューを開き、「作成」を選択するか、または「作成」アイコンをクリックします。
データ・サブセット定義のプロパティを定義します。
表示された一般ポップアップで必要な情報を指定し、「続行」をクリックします。
アプリケーション・データ・モデルと関連付けられているいずれかのソース・データベースを選択できます。
ジョブ名、資格証明を指定し、表示される「アプリケーション詳細コレクションのスケジュール」ポップアップでスケジュールを指定して、「発行」をクリックします。
新しい資格証明を使用する場合は、「新規資格証明」オプションを使用します。それ以外の場合は、「優先資格証明」オプションまたは「名前付き資格証明」オプションを使用します。
容量の見積りの収集ジョブが実行され、データ・サブセット定義ページが表示されます。表に定義が表示され、「最新のジョブ・ステータス」列に、選択されているスケジュール・オプション、およびジョブを完了するために必要な時間に応じて、「スケジュール済」、「実行中」または「成功」が示されます。
表内の定義を選択し、「アクション」メニューを開き、「編集」を選択します。
「データベース・ログイン」ページが表示されます。
優先資格証明を設定していない場合は「名前付き資格証明」または「新規資格証明」を選択し、「ログイン」をクリックします。
「編集」ページの「アプリケーション」サブページで、使用するアプリケーション・スイート全体または特定のアプリケーションを「使用可能」リストから「選択済」リストへ移動します。
アプリケーション・スイート、アプリケーションまたはアプリケーション・モジュールの名前はアプリケーション・データ・モデル内に保持されています。
「表ルール」タブをクリックします。
ここでルールを追加し、サブセットに含めるデータを定義できます。
「アクション」を選択し、次に「作成」を選択して「表ルール」ポップアップを表示するか、または「作成」アイコンをクリックします。
このルールをすべての表、特定の表または表のカテゴリに関連付けます。
「含める行」セクションで、本番データの代理サンプルのニーズに最も合うオプションを選択します。すべての行を含めない場合は、行の割合を指定することで一部の列を含めることができます。より細かいレベルで、region_id=6などのWhere句を指定できます。
Where句の指定の詳細は、手順eを参照してください。
「関連行を含む」セクションで、次のいずれかを実行します。
このルールは、親列および子列に影響を与えますが、参照整合性が保持され、サブセットの一部として子列も選択されます。
このルールは、親列にのみ影響し、参照整合性が保持されます。
「関連行を含む」チェック・ボックスを無効にすると、参照整合性が保持されない場合があります。ただし、その後追加のルールを指定して、参照整合性をリストアすることもできます。Where句を指定するかどうかによって、このチェック・ボックスを無効にできます。
Where句を指定する場合、次の手順に進みます。それ以外の場合は、手順9に進みます。
たとえば、従業員IDの値をemployee_id=:emp_idとして指定する場合、デフォルトの100に問合せ値を入力できます。
「行」ボタンを選択して、employee_id=:emp_idを入力します。
「OK」をクリックし、ルールを保存して「表ルール」タブに戻ります。
これが新しいルールである場合、「バインド変数emp_idに対応するルール・パラメータは、サブセットを生成する前に作成する必要があります。」という警告が表示されます。
表ルールを選択して、「ルール・パラメータ」タブをクリックしてから「作成」をクリックします。
ルール・パラメータのプロパティ・ポップアップが表示されます。
「名前」にemp_id、「値」に100を入力します。
注意: emp_idの前にあるコロン(:)はWhere句内にのみ存在し、新規ルール・パラメータの作成時には必要ありません。 |
「OK」をクリックして、「ルール・パラメータ」タブに表示されているプロパティを保存します。
手順10にスキップします。
「OK」をクリックし、ルールを保存して「表ルール」タブに戻ります。
リスト内に新規ルールが表示されます。その下の表には関連表が表示されます。表内の関連行はサブセットに含まれるため、サブセット・データベースの参照整合性が確保されます。
「表ルール」タブの「デフォルトの表の行」セクションで、サブセットの定義済ルールによって影響されていない表を含めるかまたは除外するかを選択します。
「すべての行を含む」オプションを選択する場合、表のすべての行がサブセットの一部として選択されます。
これは、グローバル・ルールで、サブセット全体に適用されます。すべてのルールの有効範囲が「指定しない」の場合、「すべての行を含む」オプションのみを選択できます。「表ルール」ポップアップで、「関連行を含む」オプションの選択を解除すると、有効範囲「指定しない」が確立されます。
「容量の見積もり」タブをクリックします。
「推定サブセット・サイズGB」列の値に注意してください。容量の見積りは、オプティマイザ統計に依存し、ヒストグラム統計が存在する場合は、実際のデータの配分のみが計算されます。
新規ルールを追加する場合は常に、更新値の容量の見積りを再確認します。
「容量の見積もり」サブページのデータは、一番大きなアプリケーションが一番上に表示されるようにソートされています。
Where句および後続のルール・パラメータ・プロパティを指定する場合、「容量の見積もり」サブページは、「ルール・パラメータ」タブに含まれている値で更新されます。
オプション: 「サブセット前/後スクリプト」タブをクリックします。
サブセット・データを選択する前にサブセット・データベースで実行するサブセット前スクリプトを指定できます。
サブセット・データをアセンブルした後にサブセット・データベースで実行するサブセット後スクリプトを指定できます。
どちらのスクリプト・タイプも、ソース・データベースで実行されます。
「戻る」をクリックします。
定義が完了し、「データ・サブセット定義」表に表示されます。
表内の定義を選択し、「アクション」メニューを開き、「サブセットの生成」を選択します。
「サブセットの生成方法およびパラメータ」ポップアップが表示されます。
エクスポート・ファイルへサブセット・データを書き込む方法とクローン・データベースからデータを削除する方法のどちらを使用してサブセットを作成するかを決定します。
ヒント: たとえば、4TBの非常に大きなデータベースがあり、10%などの少量の行をエクスポートする場合、エクスポート・メソッドを使用すると利便性が高まります。インプレース削除メソッドを使用するには、3.6TBのデータが必要で、エクスポート・メソッドのように速くは行われません。削除されるデータの量がデータ・サイズ全体の少量である場合は、インプレース削除メソッドをお薦めします。 |
エクスポート・ファイルへのサブセット・データの書込み
「エクスポート・ファイル・ディレクトリ」リストは、アクセス権を持つディレクトリ・オブジェクトで構成されます。
「スレッドの最大数」フィールドでは、エクスポート・ジョブのかわりにアクティブな実行操作の最大スレッド数を指定し、これにより、リソース使用量と経過時間の間にトレードオフを設定できるようになります。
クローン・データベースからのデータの削除
これを選択すると、本番データベースではなく本番データベースのクローン・コピーから不要なデータを削除することにより、インプレース・サブセットが作成されます。ルールを満たすデータのみが保持されます。本番データベースでは、このオプションを使用しないでください。
「ルール・パラメータ」タブからパラメータを定義した場合、それらのパラメータは下にある表に表示されます。パラメータの値は、「値」列の関連するフィールドをクリックすると変更できます。
「続行」をクリックして「パラメータ」ポップアップにアクセスします。
ポップアップの内容は、前の手順で「エクスポート・ファイルへのサブセット・データの書込み」を選択したか「クローン・データベースからのデータの削除」を選択したかに応じて変化します。
「エクスポート・ファイルへのサブセット・データの書込み」の場合は、必要な情報を指定し、「続行」をクリックしてジョブをスケジュールします。
「エクスポート・ファイル・ディレクトリ」リストは、アクセス権を持つディレクトリ・オブジェクトで構成されます。
「スレッドの最大数」フィールドでは、エクスポート・ジョブのかわりにアクティブな実行操作の最大スレッド数を指定します。これにより、リソース使用量と経過時間の間にトレードオフを設定できるようになります。
「インポート・スクリプトの生成」チェック・ボックスを有効にして、エクスポートしたダンプを対象のデータベースにインポートするSQLスクリプトを生成します。インポート・スクリプトは、エクスポート・ダンプと同じディレクトリにあります。この操作は、サブセットの生成が完了したときに発生します。
詳細は、「エクスポートしたダンプのインポート」を参照してください。
「ターゲット・データベースからのデータの削除」の場合は、必要な情報を指定し、「続行」をクリックしてジョブをスケジュールします。
「実行スクリプトのディレクトリ」リストは、アクセス権を持つディレクトリ・オブジェクトで構成されます。
先に進むには選択したターゲットが本番データベースでないことを示すチェックボックスを有効にする必要があります。
「続行」をクリックして「サブセット・スケジュールの生成」ポップアップからジョブをスケジュールし、「発行」をクリックします。
データ・サブセット定義ページが再表示され、「最新のジョブ・ステータス」列に、サブセット・ジョブが実行中であることに続き、このジョブが成功したことが示されます。
この手順の実行後、生成したエクスポート・ファイルを使用してサブセット・データベースをいつでも作成できるようになります。
前述の手順で示すように、エクスポートしたダンプを対象のデータベースにインポートするSQLスクリプトを生成できます。
たとえば、DB2という名前のデータベースをサブセット化する場合、DB1またはDB2のいずれかでサブセット・モデルを作成してから、サブセット生成フローでDB2を指定します。これを行った後、DB2の指定したディレクトリで、ダンプ・ファイルおよびsubset_import.sqlスクリプトが使用可能になります。サブセットを作成するには、DB2にログインして、内部的にダンプ・ファイルを使用してサブセット・データベースを作成するsubset_import.sqlスクリプトを実行します。
次の手順では、エクスポートしたダンプを前述のシナリオに基づいてインポートする方法を説明しています。
エクスポートしたダンプをインポートするには:
ターゲット・データベースにログインします。
「データ・サブセット定義」ページで、「アプリケーション・データ・モデル」を選択します。
「アクション」メニューから、「サブセットの生成」を選択します。
「サブセットの生成: サブセット・モード」ページが表示されます。
「エクスポート・ファイルへのサブセット・データの書込み」オプションを選択して、必要な「ターゲット・データベース」名および「データベース資格証明」を指定してから、「続行」をクリックします。
「サブセットの生成: パラメータ」ページが表示されます。
ページの上部に必要な入力を指定して、「インポート・スクリプトの生成」オプションを選択してから、「続行」をクリックします。
「サブセットの生成: スケジュール」ページが表示されます。
必要なスケジュール情報を指定してから「発行」をクリックします。
ダンプ・ファイルおよびsubset_import.sqlスクリプトは、指定したディレクトリで使用できるようになります。
「エクスポート・ファイル・ディレクトリ」にあるスクリプトsubset_import.sqlの場所を特定して実行します。
例15-1に示すように、プロンプトに応答します。
例15-1 サンプル・スキーマ・プロンプトおよび応答
Choose the state of the schemas from below: 1 - None of the schemas exist. 2 - A part or all of the schemas exist. 3 - The schemas exist with complete metadata but no data. Enter choice (1/2/3): 2 Enter directory object name: DATA_PUMP_DIR old 7: user_choice number := &user_choice; new 7: user_choice number := 2; old 15: dump_dir varchar2(200) := '&dump_dir_object'; new 15: dump_dir varchar2(200) := 'DATA_PUMP_DIR';
サブセット・テンプレートは、アプリケーション、サブセット・ルール、ルール・パラメータおよび前処理スクリプトまたは後処理スクリプトから構成されるサブセットの詳細を含むXMLファイルです。サブセット定義を作成して、サブセット・データを書き込んでファイルをエクスポートするよう指定すると、エクスポート・ファイルは後で再利用してインポートできるテンプレートになります。テンプレートをインポートして、異なるデータベースでサブセット操作を実行します。
通常、ワークフローは、ADMの作成中に、まず以前にエクスポートした他のXMLファイルであるADMテンプレートをインポートします。その後、データ・サブセット定義の作成中に、関連するサブセット・テンプレートをインポートします。かわりに、サブセット・テンプレートの作成中に、既存のADMを選択(ADMのインポート・フローを省略)することもできます。
「データ・サブセット定義」ページで、「アクション」メニューから「インポート」を選択します。
「データ・サブセット定義のインポート」ポップアップが表示されます。
必要な「名前」、ソース・データベースに関連付けられた「アプリケーション・データ・モデル」、「ソース・データベース」およびローカルXMLファイルを指定します。
「続行」をクリックします。
必要な「ジョブ名」、「資格証明」および「スケジュール」を指定してから、「発行」をクリックします。
ジョブが正常に実行されると、「データ・サブセット定義」ページの表のサブセットのリストに、サブセット・テンプレートが表示されます。
「データ・サブセット定義」ページで、エクスポートするサブセットを選択して、「アクション」メニューから「エクスポート」を選択します。
「ファイルのダウンロード」ポップアップで「保存」をクリックして、ファイル名およびデフォルト以外の場合はサブセットを格納するディレクトリを指定します。
「保存」をクリックします。
サブセットが定義、分析および検証された後、サブセット操作を実行してソース・データのサブセット・バージョンを作成できます。
この手順は、次の条件を前提としています。
データベースのサブセット作成に必要なルールが含まれるサブセット定義がすでに存在しています。
ソースからデータを抽出し、ターゲット・データベースのサブセット・バージョンを作成するのに必要な権限があります。サブセット技術に応じて、様々なレベルのファイルまたはデータベース権限を作成できます。次の権限が必要となります。
Enterprise Manager Cloud ControlユーザーのEM_ALL_OPERATOR
データベース・ユーザーのSELECT_CATALOG_ROLE
データベース・ユーザーのSelect Any Dictionary権限
ターゲット・データベース・ユーザーのデータベースのDBA権限
ターゲット・データベースのサブセット・バージョンを作成するには:
サブセット定義を選択し、これをソース・データベースに関連付けることにより、サブセット操作を作成します。
ソース・データベースに対してサブセット定義が検証され、スキーマの差異にフラグが設定されます。このアソシエーションは、アプリケーション開発者が作成した元のアソシエーションとは異なる可能性があります。
定義を編集し、定義されているスキーマをテスト・スキーマに再マップします。
データベースに接続するよう求められ、このデータベースは、サブセット定義に関連付けられます。これにより、ベンダーによって指定されたスキーマ名をデータベース内の実際のスキーマ名に再マップすることもできるようになります。
様々なサブセット作成技術の1つを選択します。
データ・ポンプ・ダンプ・ファイルとそれに続くデータ・ポンプ・インポート
インプレース削除(ルール条件に一致しない指定したデータベースの行が削除される)
移動中のサブセット作成またはリフレッシュ
適切なレスポンス・ファイル(SQLスクリプト、データ・ポンプ・スクリプトまたはOSスクリプト)が生成され、操作を続行するのに適した権限についてターゲット・システムが確認され、ターゲットのサイズが見積もられます。
分析を確認した後、サブセット・プロセスを発行します。
Enterprise Managerにより、サブセット・プロセスが実行され、実行の結果がまとめられます。