スキーマ・ベースラインの使用

スキーマ・ベースラインには、特定の時点で取得された一連のデータベース定義が含まれます。ベースラインは、Cloud ControlリポジトリにXMLドキュメントとして格納されます。

各ベースラインには、一意の名前を割り当てる必要があります。ベースラインは、そのベースラインで取得されるデータベース・オブジェクトの有効範囲と一致するように命名すると便利です(Financial 11.5.10、HR Benefits、PO Check Printなど)。1つのベースラインは、異なる時点で取得された一連のバージョンを保持できます。ベースラインの複数のバージョンを作成すると、一連のデータベース・オブジェクトの定義に対する変更を時間経過に合せて追跡できます。同じベースラインの2つのバージョンを比較することで、そのバージョン間で発生した変更を確認できます。

ベースラインの作成時、対応するベースラインの有効範囲指定も作成します。有効範囲指定には、データベース・オブジェクトの名前とタイプ、およびその取得元となるスキーマが示されます。ベースライン定義を作成したら、Cloud Controlジョブを発行してベースラインの最初のバージョンを取得できます。後で、あるいは定期的に同じベースラインの追加バージョンを取得できます。各ベースラインのバージョンには、バージョンの取得時に存在するメタデータ定義が記録されます。

変更管理スキーマ・ベースラインは、削除するまでシステムに保持されます。ベースラインを削除すると、システムから永久に削除されます。削除操作は元に戻すことができません。ただし、ベースラインが今後必要になる可能性がある場合、まずベースラインをダンプ・ファイル(リポジトリ・データベース・サーバー・ホストに作成)にエクスポートし、それからベースラインを削除します。ベースラインがその後必要になったら、ファイルからインポートして戻すことができます。

有効範囲指定の概要

有効範囲指定では、ベースラインに取得されるデータベース・オブジェクトが識別されます。(有効範囲指定では、スキーマの比較と同期化で処理されるオブジェクトも識別されます。)ベースラインの有効範囲を指定した後は、有効範囲指定を変更できません。この制限によって、ベースラインのすべてのバージョンが同じルールのセットを使用して取得されることが保証されます。つまり、バージョン間の相違は、データベースに加えられた変更によるもので、有効範囲指定の変更によるものではないということです。異なる有効範囲指定を使用してスキーマ・オブジェクトを取得するには、ベースラインを新たに作成する必要があります。

ベースラインの有効範囲指定には、次の3つの形式があります。

  • 取得するスキーマおよびオブジェクト・タイプを指定できます。たとえば、スキーマAPPL1およびAPPL2のすべての表、索引およびビューを取得できます。この形式の有効範囲指定は、アプリケーション・オブジェクトを含む適切に定義されたスキーマのセットが存在する場合に適切です。スキーマ・オブジェクトに加え、非スキーマ・オブジェクト(ユーザー、ロール、表領域など)や、ユーザーおよびロールに対する権限付与も取得できます。

  • 除外するスキーマと、オブジェクト・タイプを指定できます。この形式の有効範囲指定では、指定したスキーマ以外のすべてのスキーマに含まれるオブジェクトが取得されます。たとえば、SYSTEMおよびSYS以外のスキーマのすべてのオブジェクト・タイプを取得できます。この形式の有効範囲指定は、Oracle付属のスキーマに含まれるオブジェクトを除き、すべてのデータベース・オブジェクトを取得する場合に適切です。有効範囲指定の最初の形式と同様に、非スキーマ・オブジェクトと権限付与も取得できます。

  • 最後の形式として、個々のオブジェクトのタイプ、スキーマおよび名前を指定することで、それらのスキーマ・オブジェクトを個別に取得できます。この形式の有効範囲指定は、1つ以上のスキーマ内に含まれるすべてのオブジェクトではなく、一部の特定のオブジェクトを取得する場合に適切です。個々のスキーマ・オブジェクトを取得する一方で、非スキーマ・オブジェクトと権限付与も取得できます。

有効範囲指定にユーザーやロールなどの非スキーマ・オブジェクト・タイプを含めると、そのタイプのオブジェクトがすべて取得されます。個々の非スキーマ・オブジェクトを取得する方法はありません。

スキーマ・ベースライン・バージョンの取得について

ベースラインを定義する最後のステップとして、ベースラインの最初のバージョンを取得する時期を指定します。最初のバージョンは、即座に取得するか、後で(たとえば、データベースがアクティブな開発作業に使用されていないときに)取得できます。また、追加の手動操作を行わずに一定の間隔で追加のベースライン・バージョンを取得するように指定することもできます。

ベースラインを選択して「すぐに再取得」を指定することで、任意の時点の新しいベースライン・バージョンを取得することも可能です。

最初のバージョンの後に処理されるベースラインは、通常、最初のバージョンよりもずっと高速に処理されます。変更のあったオブジェクトのみが新規バージョンに取得されます。つまり、変更されたオブジェクトが数パーセントであれば、追加のベースライン・バージョンに必要とされる記憶域は、最初のバージョンで使用された記憶域よりほんの少し多くなるだけです。

単一のスキーマ・ベースライン・バージョンの操作について

単一のスキーマ・ベースライン・バージョン内で、個々のオブジェクト属性の調査、個々のオブジェクトに対応するDDLの生成、およびベースライン・バージョンのすべてのオブジェクトに対応するDDLの生成を行うことができます。ベースライン・バージョンに取得されたオブジェクト定義は、特定の時点でのオブジェクトの状態を表すことを意図しているため、変更することはできません。

  • ベースライン・オブジェクトを表示すると、オブジェクトの属性がグラフィカルに表示されます。

  • ベースライン・オブジェクトを選択して「DDLの生成」を指定すると、オブジェクトの作成に使用されるDDLが表示されます。

  • ベースライン・バージョンを選択して「DDLの生成」を指定すると、ベースライン・バージョンのすべてのオブジェクトに対応するDDLが生成されます。正しい順序でオブジェクトを作成する作業が行われますが(索引の前に表を作成するなど)、生成されたDDLをデータベースで実行しても、ベースライン・バージョンのオブジェクトを作成できるとはかぎりません。たとえば、スキーマAPPL1に含まれるすべてのスキーマ・オブジェクトを取得し、ユーザーAPPL1を含まないデータベースでベースライン・バージョンのDDLを実行しようとしても、生成されたDDLは実行に失敗します。

ベースライン・バージョンは、比較や同期化などの他のDatabase Lifecycle Management Packアプリケーションでも使用されます。ベースライン・バージョンは、データベース(または他のベースライン・バージョン)と比較できます。また、ベースライン・バージョンを同期化のオブジェクト定義のソースとして使用し、別のデータベースにその定義を再作成できます。

複数のスキーマ・ベースライン・バージョンの操作について

ベースラインに複数のバージョンが含まれる場合、バージョン間の相違を調査できます。

  • あるバージョンとその先行バージョンの間における変更点を確認するには、バージョンを選択して「前のバージョン以降の変更を表示」を指定します。画面に、前のバージョン以降に変更されたオブジェクト、追加または削除されたオブジェクト、および変更されていないオブジェクトが表示されます。変更されたオブジェクトを選択すると、そのオブジェクトの2つのバージョン間の相違が表示されます。

  • ベースラインのすべてのバージョンにわたり変更された個々のオブジェクトを確認するには、オブジェクトを選択して「バージョン履歴の表示」を指定します。画面に、オブジェクトが最初に取得、変更または削除されたときのバージョンが表示されます。この表示で、任意の2つのベースライン・バージョンに含まれるオブジェクトの定義を比較できます。

スキーマ・ベースラインのエクスポートおよびインポート

ベースラインのエクスポート/インポート機能を使用して次のことを行えます。

  • 異なるリポジトリを持つ2つのEnterprise Managerサイト間でのベースラインの転送。

  • オフラインでのベースラインの保管。ベースラインは、ファイルにエクスポートし、削除した後、ファイルからインポートして戻すことが可能です。

スキーマ・ベースラインまたはバージョンを選択して、ファイルにエクスポートできます。エクスポートおよびインポートにはデータ・ポンプが使用されます。ダンプ・ファイルおよびログ・ファイルは、Enterprise Managerリポジトリ・データベース・サーバー・ホストに保管されます。また、OracleによってサポートされているNASデバイス上のファイル・システムなど、NFSファイル・システムに設定されているディレクトリに保管することも可能です。

エクスポートおよびインポートのためのディクショナリ・オブジェクトの作成

スキーマ・ベースライン・バージョンをリポジトリからエクスポート・ファイルにエクスポートする場合、またはスキーマ・ベースラインをリポジトリ・データベース・サーバー上のインポート・ファイルからインポートする場合、エクスポートまたはインポートするディレクトリ・オブジェクトをリポジトリ・データベースで選択し、エクスポートまたはインポート・ファイルの名前を指定します。

エクスポートまたはインポートする新しいディレクトリ・オブジェクトを作成するには、次のようにします。

  1. CREATE ANY DIRECTORY権限またはDBAロールを持つユーザーとしてリポジトリ・データベースにログインします。
  2. ベースラインのエクスポート先またはインポート・ダンプ・ファイルの格納場所であるリポジトリ・データベース・サーバーのファイル・システム上に、ディレクトリの別名としてディレクトリ・オブジェクトを作成します。
  3. ディレクトリ・オブジェクトのREADおよびWRITE権限をSYSMANに付与します。

新たに作成されたディレクトリは、Cloud Controlの管理者がスキーマ・ベースラインのエクスポートおよびインポートを行う際に選択できるようになります。エクスポートおよびインポート操作で作成されるデータ・ポンプのログ・ファイルも、同じディレクトリに書き込まれます。

インポート中、名前、所有者およびソース・データベースに新しい値を設定できます。スーパー管理者は、インポート時に別の管理者を所有者として設定できます。

エクスポート操作では、ベースラインに関連付けられたジョブ情報はエクスポートされません。したがって、インポート時、ジョブ・ステータスは不明となります。

非スーパー管理者には、次が適用されます。

  • 非スーパー管理者は、自分自身のベースラインをエクスポートできます。また、非スーパー管理者は、別の管理者が所有しているベースラインのバージョンを表示しバージョン内のスキーマ・オブジェクト・リストを確認できる権限を持っている場合、そのバージョンをエクスポートできます。

  • インポート時、非スーパー管理者は、インポートされているベースラインの所有者となる必要があります。非スーパー管理者は、別の管理者を所有者として設定できません。インポート・ダンプ・ファイル内のベースラインが別の管理者によって所有されている場合、ログインしている非スーパー管理者が新規所有者としてインポート時に設定されます。

  • 非スーパー管理者に付与されているベースラインの表示権限はインポート時に失われ、インポート後は、関連付けられたジョブ情報がないため再付与できません。