この章では、マテリアライズド・ビューを使用したデータのレプリケートに関する概念情報を示します。また、データベース間のデータの連続的なレプリケート方法を説明します。
この章は次の項で構成されています。
レプリケーションは、複数のデータベースでデータベース・オブジェクトとデータを共有するプロセスです。レプリケートされたデータベース・オブジェクトとデータを複数のデータベースでメンテナンスするために、あるデータベースでのこれらのデータベース・オブジェクトの1つに対する変更が他のデータベースと共有されます。このようにして、レプリケーション環境内のすべてのデータベースでデータベース・オブジェクトとデータの同期が維持されます。
外交販売など多くの環境では、データベースがネットワークに接続されていない期間があります。このような環境では、オンデマンドで、または夜間などにスケジュールした一定間隔でレプリカがデータを同期する必要があります。これらのデータベースは、ネットワークに再接続されたときに、同じデータを共有している他のデータベースと同期されます。
これらのニーズに対処するために、Oracle Databaseには、マテリアライズド・ビュー・レプリケーションというレプリケーション・タイプが用意されています。マテリアライズド・ビューには、ある単一の時点での表の完全コピーまたは部分コピーが含まれます。マテリアライズド・ビューは、読取り専用または更新可能にすることができます。
読取り専用マテリアライズド・ビューは、表のコピーへの読取り専用アクセスを可能にします。読取り専用マテリアライズド・ビューを使用して、アプリケーションおよびユーザーは、リモートの場所に存在する表のローカル・コピーにアクセスできます。読取り専用マテリアライズド・ビューは、データへのローカル・アクセスを可能にし、複数の場所にある同じデータに対する問合せを許可することにより、任意の単一の場所で必要なリソースを削減します。たとえば、読取り専用マテリアライズド・ビューは、通常はレポートの目的で使用されます。
更新可能マテリアライズド・ビューは、表のコピーへの読取り/書込みアクセスを提供します。更新可能マテリアライズド・ビューを使用して、アプリケーションおよびユーザーは、表と表のコピーの両方を変更でき、これらの変更をある時点で同期できます。たとえば、更新可能マテリアライズド・ビューは、通常は地域のオフィスに製品カタログを定期的に配布するため、また営業員が顧客サイトから注文を行えるようにするために使用されます。
簡単な一括デプロイメントと切断されたコンピューティングがサポートされるため、読取り専用マテリアライズド・ビューと更新可能マテリアライズド・ビューはどちらもモバイル・コンピューティング・アプリケーションに特に適しています。
次の各項で、マテリアライズド・ビュー・レプリケーションの詳細を説明します。
レプリケーション環境では、マテリアライズド・ビューはデータをマスター・サイトという別のデータベース内の表と共有します。マスター・サイトのマテリアライズド・ビューに関連付けられている表はマスター表と呼ばれます。マテリアライズド・ビューには、ある単一の時点のマスター表の完全コピーまたは部分コピーが含まれます。マテリアライズド・ビューが存在するデータベースはマテリアライズド・ビュー・サイトと呼ばれます。
マテリアライズド・ビューをリフレッシュすると、マテリアライズド・ビューのデータがそのマスター表のデータと同期します。マテリアライズド・ビューは、固定スケジュールまたはオンデマンドでのリフレッシュの実行時期を制御します。リフレッシュの際には、マスター表の行データがプル・ダウンされ、マテリアライズド・ビュー・サイトに適用されます。Oracle Databaseには、次のリフレッシュ方式があります。
高速リフレッシュは、最後のリフレッシュ以降に変更された行のみプル・ダウンします。
完全リフレッシュでは、マテリアライズド・ビュー全体が更新されます。
強制リフレッシュでは、可能な場合に高速リフレッシュが実行されます。高速リフレッシュが不可能な場合、強制リフレッシュでは、完全リフレッシュが実行されます。
高速リフレッシュは、完全リフレッシュよりも効率的です。マテリアライズド・ビューの高速リフレッシュは、マスター表にマテリアライズド・ビュー・ログがある場合にのみ可能です。マテリアライズド・ビュー・ログは、マスター表に対して実行されたすべての挿入、更新および削除操作を記録するマスター・サイトの表です。
マテリアライズド・ビュー・ログは、単一のマスター表に関連付けられ、各マスター表には、マスター表からリフレッシュするマテリアライズド・ビューの数に関係なく1つのマテリアライズド・ビュー・ログしかありません。マテリアライズド・ビューに高速リフレッシュが実行されると、マテリアライズド・ビューが最後にリフレッシュされた後に追加されたマテリアライズド・ビュー・ログ内のエントリがマテリアライズド・ビューに適用されます。
トランザクションで2つ以上のマテリアライズド・ビュー間に一貫性が求められる場合、マテリアライズド・ビューをリフレッシュ・グループに編成できます。リフレッシュ・グループをリフレッシュすることにより、リフレッシュ・グループのマテリアライズド・ビューすべてのデータがトランザクションにおいて同じ一貫した時点に対応付けられます。リフレッシュ・グループ内のマテリアライズド・ビューを個別にリフレッシュすることもできます。ただし、マテリアライズド・ビューを個別にリフレッシュした場合、リフレッシュ・グループ内の残りのマテリアライズド・ビューはリフレッシュされないため、リフレッシュ・グループのメリットがなくなります。
マテリアライズド・ビュー・レプリケーションを構成する前に、レプリケーション環境に参加するデータベースを準備します。
マテリアライズド・ビュー・レプリケーションを準備するには:
可能な場合は、レプリケートされた各表に主キーがあることを確認します。主キーが可能でない場合は、レプリケートされた各表に、表の各行の一意識別子として使用できる列または列のセットが必要です。レプリケーション環境で使用することを計画している表に主キーまたは一意列のセットがない場合は、これらの表を適宜変更します。
マテリアライズド・ビュー・レプリケーションを構成する前に、レプリケーション環境の各データベースで初期化パラメータを正しく設定します。
グローバル名: レプリケーション環境に参加する各データベースでGLOBAL_NAMES
初期化パラメータをTRUE
に設定します。詳細は、「GLOBAL_NAMES初期化パラメータをTRUEに設定」を参照してください。
システム・グローバル領域(SGA)および共有プール: 共有プールが、レプリケーション環境に対して作成されるコンポーネントを十分に収容できる大きさであることを確認します。共有プールは、SGAの一部です。MEMORY_TARGET
初期化パラメータ(自動メモリー管理)、SGA_TARGET
初期化パラメータ(自動共有メモリー管理)またはSHARED_POOL_SIZE
初期化パラメータを設定することにより、共有プールを管理できます。通常、非レプリケーション環境よりもレプリケーション環境の方がOracle Databaseの共有プールが大きくなります。
初期化パラメータの変更の詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。
ネットワーク接続を構成して、レプリケーション環境内のデータベースが相互に通信できるようにします。データベース間のネットワーク接続の構成の詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。
関連項目:
|
マテリアライズド・ビューを構成する前に、レプリケーション環境のマテリアライズド・ビュー・サイトとして機能するデータベースを構成する必要があります。この項の手順を完了すると、マテリアライズド・ビュー環境で必要なユーザーとデータベース・リンクが構成されます。また、更新可能なマテリアライズド・ビューを構成すると、これらの手順でも更新可能なマテリアライズド・ビューへの変更に対してスケジュールされたリンクおよびパージを構成されます。
Enterprise Managerでマテリアライズド・ビュー・サイトを構成するには:
「マテリアライズド・ビュー・レプリケーションの準備」で説明するアクションを完了します。
Oracle Enterprise Managerでは、SYSTEM
などの管理ユーザーとしてマテリアライズド・ビュー・サイトにログインします。
「データベース」ホームページに移動します。
「データ移動」をクリックして「データ移動」サブページを開きます。
「アドバンスト・レプリケーション」セクションの「設定」をクリックします。
「アドバンスト・レプリケーション: 設定」ページで、「更新可能なマテリアライズド・ビュー・レプリケーション」を拡張します。
「レプリケーション用のマテリアライズド・ビュー・サイトの構成」を選択します。
「続行」をクリックして、レプリケーション用のマテリアライズド・ビュー・サイトを構成するウィザードを開きます。
ウィザードのページに入力して、マテリアライズド・ビュー・サイトを構成します。「ユーザーの作成」ページで、マテリアライズド・ビュー管理者の適切なパスワードを入力します。パスワードの選択の詳細は、『Oracle Database 2日でセキュリティ・ガイド』を参照してください。
ヒント: ウィザードの「スキーマの作成」ページでは、レプリケートするデータベース・オブジェクトを含んだスキーマが選択されていることを確認してください。 |
ウィザードを終了すると、マテリアライズド・ビュー・サイトを構成するようにEnterprise Managerジョブがスケジュールされます。ジョブが正常に実行されると、マテリアライズド・ビュー・サイトは構成され、それぞれにマテリアライズド・ビュー管理者ができます。デフォルトでは、マテリアライズド・ビュー管理者の名前はmvadmin
です。ウィザードが完了したら、このユーザーのパスワードを指定します。各マテリアライズド・ビューには、ウィザードの「スキーマの作成」ページで指定した各スキーマが含まれています。
各マテリアライズド・ビュー・サイトで、レプリケート・スキーマに必要なデータベース・リンクを作成します。
マテリアライズド・ビュー・サイトのスキーマにマテリアライズド・ビューを作成するには、スキーマは、データベース・リンクを通じて、マスター・サイト内の対応するスキーマに接続する必要があります。
データベース・リンクを作成するには:
コマンドラインでSQL*Plusを開き、レプリケート・スキーマの所有者としてマテリアライズド・ビュー・データベースに接続します。
たとえば、ii2.example.com
データベース内のhr
スキーマにマテリアライズド・ビューを作成することを計画している場合、次を入力します。
sqlplus hr@ii2.example.com
Enter password: password
SQL*Plusの起動の詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。
マスター・データベースで、対応するレプリケート・スキーマに接続するデータベース・リンクを作成します。
たとえば、ii1.example.com
データベース内のhr
スキーマに接続するデータベースを・リンクを作成して、次を入力します。
CREATE DATABASE LINK ii1.example.com CONNECT TO hr
IDENTIFIED BY password USING 'ii1.example.com';
マテリアライズド・ビューを高速リフレッシュするには、マスター・サイトのマスター表に対してマテリアライズド・ビュー・ログを構成します。高速リフレッシュは、前回のリフレッシュ後に変更された行のみを更新するので、完全リフレッシュより効率的です。詳細は、「マテリアライズド・ビューのリフレッシュの概要」を参照してください。
マテリアライズド・ビュー・ログを構成するには:
Oracle Enterprise Managerで、SYSTEM
などの管理ユーザーとしてマスター・サイトにログインします。
「データベース」ホームページに移動します。
「データ移動」をクリックして「データ移動」サブページを開きます。
「アドバンスト・レプリケーション」セクションの「設定」をクリックします。
「アドバンスト・レプリケーション: 設定」ページで、「更新可能なマテリアライズド・ビュー・レプリケーション」を拡張します。
「高速リフレッシュ用にソース・データベース表にマテリアライズド・ビュー・ログを作成」を選択します。
「続行」をクリックして「マテリアライズド・ビュー・ログの作成」ページを開きます。
Schema.Tableフィールドにschema.table
の形式でスキーマ名とマスター表の表名を入力するか、懐中電灯アイコンをクリックして表を検索します。
「列の移入」をクリックします。
作成しているマテリアライズド・ビュー・ログの特定の表領域がある場合は、「表領域」フィールドに表領域名を入力します。それ以外の場合は、フィールドを<Default>
のままにします。
「リフレッシュ・タイプ」で「主キー」が選択されていることを確認してください。
「OK」をクリックしてマテリアライズド・ビュー・ログを作成します。
注意: SQL文CREATE MATERIALIZED VIEW LOG を使用して、マテリアライズド・ビュー・ログを作成することもできます。 |
表の読取り専用レプリカは、レプリケートされたデータの変更をアプリケーションに許可することなくレプリケートされたデータへのアクセスを可能にするデータベースに適しています。
次の各項で、マテリアライズド・ビューを使用した読取り専用データのレプリケートを説明します。
読取り専用マテリアライズド・ビューは、マスター・サイトで発生した表データへの読取り専用アクセスを可能にします。ネットワークの可用性にかかわらず、アプリケーションは読取り専用マテリアライズド・ビューにデータを問い合せて、マスター・サイトへのネットワーク・アクセスを回避できます。ただし、システム全体のアプリケーションは、挿入、更新および削除操作を実行するためにマスター・サイトのデータにアクセスする必要があります。
図7-1に、読取り専用マテリアライズド・ビューの動作を示します。
図7-1は、クライアント・アプリケーションがマテリアライズド・ビュー・サイトの読取り専用マテリアライズド・ビューに対してローカル問合せを実行できることを示しています。これらのアプリケーションはリモート・マスターのデータを更新できます。マテリアライズド・ビューは、マテリアライズド・ビューがネットワーク上でリフレッシュされる際にマスターでの変更で更新されます。
この項の例では、マテリアライズド・ビューを使用した読取り専用データ・レプリケーションを構成します。具体的には、この例ではマテリアライズド・ビュー・サイトに次の読取り専用マテリアライズド・ビューを作成します。
マスター・サイトのhr.employees
表に基づくmvadmin.employees_mvr
マテリアライズド・ビュー。
マスター・サイトのhr.departments
表に基づくmvadmin.departments_mvr
マテリアライズド・ビュー。
これらの読取り専用マテリアライズド・ビューを構成するには:
次の項で説明するアクションを完了します。
マテリアライズド・ビューの高速リフレッシュを実行する場合は、「マスター・サイトでのマテリアライズド・ビュー・ログの構成」を参照してください。この例では、hr.departments
表とhr.employees
表のマテリアライズド・ビュー・ログを作成します。
Enterprise Managerで、マテリアライズド・ビュー・サイトにマテリアライズド・ビュー管理者としてログインします。マテリアライズド・ビュー・サイトは、マテリアライズド・ビューを作成するデータベースです。マテリアライズド・ビュー管理者のデフォルトのユーザー名はmvadmin
です。
「データベース」ホームページに移動します。
「データ移動」をクリックして「データ移動」サブページを開きます。
「アドバンスト・レプリケーション」セクションの「設定」をクリックします。
「アドバンスト・レプリケーション: 設定」ページで、「読取り専用マテリアライズド・ビュー」を拡張します。
「マテリアライズド・ビューの作成」を選択します。
「続行」をクリックして「マテリアライズド・ビューの作成」ページを開きます。
次のアクションを完了して、hr.employees_mvr
マテリアライズド・ビューを作成します。
「名前」フィールドにemployees_mvr
と入力します。
「スキーマ」フィールドにhr
と入力します。
作成しているマテリアライズド・ビューの特定の表領域がある場合は、「表領域」フィールドに表領域名を入力します。それ以外の場合は、フィールドを<Default>
のままにします。
「マテリアライズド・ビューをクエリー・リライトに対して有効化」を選択解除します。
次の項目が選択されていないことを確認します。
マテリアライズド・ビューを更新可能にする
既存の表からの作成
「マテリアライズド・ビュー問合せ」フィールドに次のように入力します。
SELECT employee_id,
first_name,
last_name,
email,
phone_number,
hire_date,
job_id,
salary,
commission_pct,
manager_id,
department_id
FROM hr.employees@master_site
master_site
を、マスター表を含むマスター・サイトのグローバル名で置換します。
「マテリアライズド・ビューを作成後に分析」を選択解除します。
必要に応じて、他のサブページでマテリアライズド・ビューのオプションを設定します。
「OK」をクリックしてマテリアライズド・ビューを作成します。
hr.employees_mvr
マテリアライズド・ビューは、マスターhr.employees
表の完全なコピーです。データのサブセットを含むマテリアライズド・ビューを作成するには、SELECT
文にWHERE
句を含めます。
「アドバンスト・レプリケーション: 設定」ページで、「読取り専用マテリアライズド・ビュー」を拡張します。
「マテリアライズド・ビューの作成」を選択します。
「続行」をクリックして「マテリアライズド・ビューの作成」ページを開きます。
次のアクションを完了して、hr.departments_mvr
マテリアライズド・ビューを作成します。
「名前」フィールドにdepartments_mvr
と入力します。
「スキーマ」フィールドにhr
と入力します。
作成しているマテリアライズド・ビューの特定の表領域がある場合は、「表領域」フィールドに表領域名を入力します。それ以外の場合は、フィールドを<Default>
のままにします。
「マテリアライズド・ビューをクエリー・リライトに対して有効化」を選択解除します。
次の項目が選択されていないことを確認します。
マテリアライズド・ビューを更新可能にする
既存の表からの作成
「マテリアライズド・ビュー問合せ」フィールドに次のように入力します。
SELECT department_id,
department_name,
manager_id,
location_id
FROM hr.departments@master_site
master_site
を、マスター表を含むマスター・サイトで置換します。
「マテリアライズド・ビューを作成後に分析」を選択解除します。
必要に応じて、他のサブページでマテリアライズド・ビューのオプションを設定します。
「OK」をクリックしてマテリアライズド・ビューを作成します。
リフレッシュ・グループを作成し、それにマテリアライズド・ビューを追加して、リフレッシュされる、ある単一の時点でこれらが一貫するようにします。この例では、hr.employees_mvr
およびhr.departments_mvr
マテリアライズド・ビューをリフレッシュ・グループに追加します。詳細は、「リフレッシュ・グループの構成」を参照してください。
注意: SQL文CREATE MATERIALIZED VIEW を使用して、マテリアライズド・ビューを作成することもできます。 |
表の読取り/書込みレプリカは、レプリケートされたデータの変更をアプリケーションに許可するデータベースに適しています。
次の各項で、マテリアライズド・ビューを使用した読取り/書込みデータのレプリケートを説明します。
更新可能マテリアライズド・ビューでは、ユーザーがマテリアライズド・ビューの行を挿入、更新および削除できます。更新可能マテリアライズド・ビューがリフレッシュされると、これらの変更はマスター・サイトにプッシュされ、マスター表に適用されます。
図7-2に、更新可能マテリアライズド・ビューの動作を示します。
図7-2は、クライアント・アプリケーションがマテリアライズド・ビュー・サイトの更新可能マテリアライズド・ビューを問い合せて更新できることを示しています。また、これらのアプリケーションはリモート・マスター・サイトのデータを更新することもできます。マテリアライズド・ビューによってネットワーク上のリフレッシュが初期化されるとき、リフレッシュには主に2つの段階があります。まず、マテリアライズド・ビュー上で実行されたトランザクションがマスター・サイトにプッシュされ、適切に適用されます。次に、更新の競合があればそれを解消した後で、変更された行データをマテリアライズド・ビューがマスター・サイトからプルして適用します。
次の各項で、マテリアライズド・ビューを使用したレプリケーションの詳細を説明します。
レプリケーション・グループは、論理的に関連するレプリケーション・オブジェクトのコレクションです。関連するデータベース・オブジェクトをレプリケーション・グループ内で編成することにより、多くのオブジェクトをまとめて管理するのが簡単になります。マスター・サイトでは、レプリケーション・グループはマスター・グループと呼ばれます。マテリアライズド・ビュー・サイトでは、レプリケーション・グループはマテリアライズド・ビュー・グループと呼ばれます。
更新可能マテリアライズド・ビューに対する変更をリフレッシュ中にマスターにプッシュするには、次の条件が満たされている必要があります。
更新可能マテリアライズド・ビューは、マテリアライズド・ビュー・グループに属する必要があります。
マテリアライズド・ビュー・グループは、マスター・サイトのマスター・グループに基づいている必要があります。
マテリアライズド・ビュー・グループには、マスター・グループ内のすべての表または表のサブセットのマテリアライズド・ビューを含めることができます。
図7-3は、2つのマテリアライズド・ビュー・グループを示しています。マテリアライズド・ビュー・グループAには、マスター・グループの表のサブセットに対応するマテリアライズド・ビューが含まれ、マテリアライズド・ビュー・グループBには、マスター・グループの各表のマテリアライズド・ビューが含まれます。
マテリアライズド・ビュー・グループとリフレッシュ・グループを同じサイトで使用している場合、単一リフレッシュ・グループには複数のマテリアライズド・ビュー・グループを含めることができます。マテリアライズド・ビュー・グループは、リフレッシュ・グループと異なりますが、同じマテリアライズド・ビューを含む場合があります。
図7-4に、2つのマテリアライズド・ビュー・グループを含むリフレッシュ・グループを示します。
図7-4 リフレッシュ・グループは複数のマテリアライズド・ビュー・グループのオブジェクトを含むことができる
マテリアライズド・ビュー・サイトでは、遅延トランザクションには更新可能マテリアライズド・ビューに対する変更が含まれます。遅延トランザクションは、マテリアライズド・ビュー・サイトに格納されるため、マスター・サイトに送信でき、マスター表に適用できます。
更新可能マテリアライズド・ビューのリフレッシュは、最初にマテリアライズド・ビュー・サイトの遅延トランザクションをマスター・サイトにプッシュします。次に、マスター・サイトのデータがプルされて、マテリアライズド・ビューに適用されます。
オプションとして、リフレッシュとは関係のない定期的な間隔で遅延トランザクションをプッシュすることを選択できます。 スケジュールされたリンクは、遅延トランザクションをプッシュするためのユーザー定義スケジュールがあるデータベース・リンクです。スケジュールされたリンクは、マテリアライズド・ビュー・サイトが遅延トランザクション・キューをそのマスター・サイトに送信する方法を決定します。スケジュールされたリンクを作成する場合、Oracle Databaseはローカル・ジョブ・キューにジョブを作成して、マスター・サイトに遅延トランザクション・キューをプッシュします。
マテリアライズド・ビュー・サイトにマスター・サイトへの常時接続がある場合は、オプションとして、スケジュールされたリンクを使用して遅延トランザクションを定期的な間隔でマスター・サイトにプッシュできます。マテリアライズド・ビュー・サイトが長時間マスター・サイトから切断されている場合、通常はスケジュールどおりに遅延トランザクションをプッシュしないことをお薦めします。この場合は、オンデマンドでリフレッシュするのが最適で、これにより、変更がマスター・サイトにもプッシュされます。
更新可能マテリアライズド・ビューに対する変更がマスター・サイトにプッシュされた後は、マテリアライズド・ビュー・サイトに格納する必要がなくなります。遅延トランザクション・キューのサイズを維持するために、正常に完了した遅延トランザクションをパージする必要があります。これらの遅延トランザクションは、パージ・スケジュールに従って一定の間隔でパージできます。
更新可能マテリアライズド・ビューを使用する場合は、競合が発生する可能性があります。マスター表とマテリアライズド・ビューの同じ行に変更がほぼ同時に加えられた場合は、競合が発生します。リフレッシュ時に、前回のリフレッシュ後にマスター表および対応するマテリアライズド・ビューで同じ行が変更された場合、マスター・サイトは競合を検出します。
デフォルトでは、Oracle Databaseは競合更新を必ず検出し、ログに記録します。 競合解消を使用して、各競合がビジネス・ルールに従って解消されるようにし、すべてのサイトでデータが正しく収束するようにできます。Oracle Databaseには、マスター・サイトで構成できる組込みの競合解消方法があります。
関連項目:
|
この項では、マテリアライズド・ビューを使用した読取り/書込みデータ・レプリケーションを構成する方法を示します。具体的には、この例では次のものを構成します。
マスター表を含むマスター・サイトのマスター・グループ。詳細は、「レプリケーション・グループと更新可能マテリアライズド・ビューの概要」を参照してください。
マスター・サイトのマスター表に基づく更新可能マテリアライズド・ビューを含むマテリアライズド・ビュー・サイトにあるマテリアライズド・ビュー・グループ。マテリアライズド・ビューを更新可能にするには、そのマテリアライズド・ビューがマテリアライズド・ビュー・サイトのマテリアライズド・ビュー・グループ内にあり、マテリアライズド・ビュー・グループがマスター・サイトのマスター・グループに対応している必要があります。詳細は、「レプリケーション・グループと更新可能マテリアライズド・ビューの概要」を参照してください。
マスター表のマスター・サイトでの最新のタイムスタンプ競合解消。競合解消により、マスター表および対応する更新可能マテリアライズド・ビュー内の同じ行がほぼ同時に変更された場合に、マスター表とマテリアライズド・ビューの一貫性が保たれます。詳細は、「競合と更新可能マテリアライズド・ビューの概要」を参照してください。
競合が発生した場合、最新のタイムスタンプ競合解消とは、最新の変更は保持され、古い変更は破棄されることを意味します。ある時点で行がマテリアライズド・ビュー内で更新されると、後でマスター表の行も更新され、マテリアライズド・ビューがリフレッシュされると、マスター表の行は自動的にマテリアライズド・ビューの行に置換されます。マテリアライズド・ビューの行がマスター表の行より先に更新されている場合、マテリアライズド・ビューの行は、リフレッシュ中にマスター表の行を置換します。
これらの更新可能マテリアライズド・ビューを構成するには:
次の項で説明するアクションを完了します。
マテリアライズド・ビューの高速リフレッシュを実行する場合は、「マスター・サイトでのマテリアライズド・ビュー・ログの構成」を参照してください。マスター表になる各マスター表のマテリアライズド・ビュー・ログを構成します。
マスター・サイトを構成します。マスター・サイトには、更新可能なマテリアライズド・ビューがベースとなっているマスター表を含みます。
Oracle Enterprise Managerで、SYSTEM
などの管理ユーザーとしてマスター・サイトになるデータベースにログインします。
「データベース」ホームページに移動します。
「データ移動」をクリックして「データ移動」サブページを開きます。
「アドバンスト・レプリケーション」セクションの「設定」をクリックします。
「アドバンスト・レプリケーション: 設定」ページで、「更新可能なマテリアライズド・ビュー・レプリケーション」を拡張します。
「レプリケーション用のマスター・サイトの構成」を選択します。
「続行」をクリックして、レプリケーション用のマスター・サイトを構成するウィザードを開きます。
ウィザードのページに入力して、マスター・サイトを構成します。
ウィザードを終了すると、マスター・サイトを構成するようにEnterprise Managerジョブがスケジュールされます。ジョブが正常に実行されると、マスター・サイトは構成され、レプリケーション管理者ができます。デフォルトでは、レプリケーション管理者のユーザー名はrepadmin
です。ウィザードが完了したら、このユーザーのパスワードを指定します。
トリガーを作成して変更が発生した時刻で各マスター表のtime
列を更新します。
ヒント: トリガーを使用してtime 列を更新するかわりに、アプリケーションで表に対して列を修正または挿入するたびに、time 列を移入できます。 |
Oracle Enterprise Managerで、SYSTEM
などの管理者ユーザーとしてマスター表を含むデータベースにログインします。
手順3の完了後にEnterprise Managerからログアウトしなければ、管理ユーザーとしてマスター・サイトにログインした状態を保持できます。
「データベース」ホームページに移動します。
「スキーマ」をクリックして「スキーマ」サブページを開きます。
「プログラム」セクションで「トリガー」をクリックします。
「トリガー」ページで、「作成」をクリックします。
「トリガーの作成」ページが表示され、「一般」サブページが表示されます。
「名前」フィールドにトリガーの名前を入力します。
「スキーマ」フィールドに管理ユーザー名を保持します。
「トリガー本体」フィールドに次のように入力します。
BEGIN -- The IF/THEN statement ensures that the trigger does not fire during -- materialized view refresh. IF (DBMS_REPUTIL.FROM_REMOTE = FALSE AND DBMS_SNAPSHOT.I_AM_A_REFRESH = FALSE) THEN :NEW.TIME := SYSTIMESTAMP; END IF; END;
「イベント」をクリックして「イベント」サブページを開きます。
「対象オブジェクト」リストで「表」が選択されていることを確認します。
「表(Schema.Table)」フィールドにschema.table
の形式で表名を入力するか、懐中電灯アイコンを使用してデータベース・オブジェクトを検索します。
「起動タイミング」に「前」が選択されていることを確認してください。
「イベント」に「選択」および「列の更新」を選択します。
表内の列が表示されます。
新規のtime
列を除く表のすべての列を選択します。
「詳細」をクリックします。
「行レベル・トリガー」を選択します。
「OK」をクリックしてトリガーを作成します。
Enterprise Managerからログアウトします。
注意: SQL文CREATE TRIGGER を使用して、トリガーを作成することもできます。 |
Enterprise Managerで、レプリケーション管理者としてマスター・サイトにログインします。デフォルトでは、レプリケーション管理者のユーザー名はrepadmin
です。
「データベース」ホームページに移動します。
「データ移動」をクリックして「データ移動」サブページを開きます。
「アドバンスト・レプリケーション」セクションの「設定」をクリックします。
「アドバンスト・レプリケーション: 設定」ページが表示されます。
「マルチマスター・レプリケーション」を拡張します。
「マスター・グループの作成」を選択します。
「続行」をクリックして「マスター・グループの作成」ウィザードを開きます。
ウィザードのページに入力して、マスター・グループを構成します。
ヒント:
|
ウィザードを終了すると、マスター・グループを構成するようにEnterprise Managerジョブがスケジュールされます。
マスター・サイトにレプリケーション管理者としてログインしながら、新規マスター・グループを含むデータベースの「データベース」ホームページに移動します。
「データ移動」をクリックして「データ移動」サブページを開きます。
「アドバンスト・レプリケーション」セクションの「管理」をクリックします。
「アドバンスト・レプリケーション: 管理」ページが表示され、「概要」サブページが表示されます。
「マルチマスター・レプリケーション」セクションで、「マスター・グループ」に関連付けられている数字をクリックします。
「マスター・グループ」ページで、マスター・グループ・ステータスがNORMAL
の場合、「停止」をクリックします。ステータスがQUIESCED
の場合、次の手順に移動します。
コマンドラインでSQL*Plusを開き、レプリケーション管理者としてマスター・サイトに接続します。
たとえば、レプリケーション管理者がrepadmin
で、マスター・サイトがii1.example.com
の場合、次を入力します。
sqlplus repadmin@ii1.example.com
Enter password: password
SQL*Plusの起動の詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。
SQL*PlusのDBMS_REPCAT
パッケージでMAKE_COLUMN_GROUP
プロシージャを実行して、レプリケート表の列グループを作成します。
たとえば、hr.departments
表の列グループを作成して、次のプロシージャを実行します。
BEGIN DBMS_REPCAT.MAKE_COLUMN_GROUP( sname => 'hr', oname => 'departments', column_group => 'dep_time_cg', list_of_column_names => 'department_id, department_name, manager_id, location_id, time'); END; /
list_of_columns
パラメータのすべての表列を含みます。
MAKE_COLUMN_GROUP
プロシージャの詳細は、『Oracle Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス』を参照してください。
SQL*PlusのDBMS_REPCAT
パッケージでADD_UPDATE_RESOLUTION
プロシージャを実行して、表のLATEST
TIME
競合解消を指定します。
たとえば、次のプロシージャを実行して、hr.departments
表の手順gで作成した列グループを使用してLATEST
TIME
競合解消を指定します。
BEGIN DBMS_REPCAT.ADD_UPDATE_RESOLUTION ( sname => 'hr', oname => 'departments', column_group => 'dep_time_cg', sequence_no => 1, method => 'LATEST TIMESTAMP', parameter_column_name => 'time'); END; /
column_group
パラメータの手順gで作成した列グループを指定し、parameter_column_name
列の時間列を指定します。
ADD_UPDATE_RESOLUTION
プロシージャの詳細は、『Oracle Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス』を参照してください。
Enterprise Managerで、レプリケーション管理者としてマスター・サイトにログインします。デフォルトでは、レプリケーション管理者のユーザー名はrepadmin
です。
「データ移動」をクリックして「データ移動」サブページを開きます。
「アドバンスト・レプリケーション」セクションの「管理」をクリックします。
「アドバンスト・レプリケーション: 管理」ページが表示され、「概要」サブページが表示されます。
「マルチマスター・レプリケーション」セクションで、「マスター・グループ」に関連付けられている数字をクリックします。
「マスター・グループ」ページで、マスター・グループを選択します。
「編集」をクリックしてマスター・グループを編集するページを開きます。
「オブジェクト」をクリックして「オブジェクト」サブページを開きます。
競合解消に追加した各オブジェクトに関する「レプリケーション・サポートの作成」を選択していることを確認します。
「適用」をクリックすると変更が保存されます。
ページ上部の「マスター・グループ」をクリックして「マスター・グループ」ページに戻ります。
マスター・グループの「再開」をクリックします。
Enterprise Managerで、マテリアライズド・ビュー・サイトにマテリアライズド・ビュー管理者としてログインします。マテリアライズド・ビュー・サイトは、マテリアライズド・ビューを作成するデータベースです。マテリアライズド・ビュー管理者のデフォルトのユーザー名はmvadmin
です。
「データベース」ホームページに移動します。
「データ移動」をクリックして「データ移動」サブページを開きます。
「アドバンスト・レプリケーション」セクションの「設定」をクリックします。
「アドバンスト・レプリケーション: 設定」ページで、「更新可能なマテリアライズド・ビュー・レプリケーション」を拡張します。
「マテリアライズド・ビュー・グループの作成」を選択します。
「続行」をクリックして「マテリアライズド・ビュー・グループの作成」ウィザードを開きます。
ウィザードのページに入力して、マテリアライズド・グループを構成します。
ヒント: 「マテリアライズド・ビューのカスタマイズ」ページの各マテリアライズド・ビューについて:
|
ウィザードを終了すると、マテリアライズド・ビュー・グループを構成するようにEnterprise Managerジョブがスケジュールされます。
変更が発生したときに最新の時刻を持つ各マテリアライズド・ビューのtime
列を更新するトリガーを作成します。トリガーは最新のタイムスタンプ競合解消に必要です。
マテリアライズド・ビュー・グループの構成中に既存のリフレッシュ・グループを指定しなかった場合は、リフレッシュ・グループを作成し、マテリアライズド・ビューをそのグループに追加して、リフレッシュされたときにこれらがある時点で一貫するようにします。詳細は、「リフレッシュ・グループの構成」を参照してください。
2つ以上のマテリアライズド・ビューをある時点で一致させる必要がある場合は、マテリアライズド・ビューが同じリフレッシュ・グループに属している必要があります。
リフレッシュ・グループを作成し、これにマテリアライズド・ビューを追加するには:
Enterprise Managerで、マテリアライズド・ビュー・サイトにマテリアライズド・ビュー管理者としてログインします。マテリアライズド・ビュー管理者のデフォルトのユーザー名はmvadmin
です。
「データベース」ホームページに移動します。
「データ移動」をクリックして「データ移動」サブページを開きます。
「アドバンスト・レプリケーション」セクションの「管理」をクリックします。
「アドバンスト・レプリケーション: 管理」ページが表示され、「概要」サブページが表示されます。
「マテリアライズド・ビュー・サイト」セクションで、「リフレッシュ・グループ」に関連付けられている数字をクリックします。
「リフレッシュ・グループ」ページで、「作成」をクリックします。
「リフレッシュ・グループの作成」ページが表示され、「一般」サブページが表示されます。
次のアクションを完了します。
リフレッシュ・グループの名前を「名前」フィールドに入力します。
「スキーマ」フィールドにリフレッシュ・グループの所有者を入力します。通常は、マテリアライズド・ビュー管理者がリフレッシュ・グループを所有します。
必要に応じて、「次の日付」および「間隔」設定を調整します。「次の日付」設定は、リフレッシュ・グループの次のリフレッシュが発生する時期を決定します。「間隔」設定は、リフレッシュ・グループが自動的にリフレッシュされる頻度を決定します。「変更」をクリックして、各設定を調整する新しいページを開きます。
マテリアライズド・ビュー・サイトとマスター・サイト間に制限された接続がある場合は、オンデマンドでリフレッシュできます。この場合は、「間隔」フィールドをクリアします。
「リフレッシュ前にマテリアライズド・ビューから変更をマスターに送信」を選択します。このオプションでは、リフレッシュ時に、マテリアライズド・ビュー・サイトがマテリアライズド・ビューのリフレッシュ前に、マスター表の更新可能なマテリアライズド・ビューに対する変更のプッシュを指定します。
「マテリアライズド・ビュー」サブページを開いて、「マテリアライズド・ビュー」をクリックします。
「追加」をクリックして「検索と選択: マテリアライズド・ビュー」ページを開きます。
検索ツールを使用して、リフレッシュ・グループに追加するマテリアライズド・ビューをリストします。
リフレッシュ・グループに追加するマテリアライズド・ビューを選択します。
「OK」をクリックして「マテリアライズド・ビュー」サブページに戻ります。選択したマテリアライズド・ビューがリフレッシュ・グループにリストされます。
「OK」をクリックして、リフレッシュ・グループを作成します。
注意: DBMS_REFRESH パッケージの次のプロシージャを使用して、リフレッシュ・グループを作成し、これにオブジェクトを追加することもできます。
|