Oracle マテリアライズドビュー - Amazon Relational Database Service

Oracle マテリアライズドビュー

Oracle マテリアライズドビューのレプリケーションを使用して、大規模なデータセットを効率的に移行することもできます。レプリケーションを使用すると、移行先テーブルと移行元との同期を継続的に維持できるため、Amazon RDS への実際のカットオーバーは、必要に応じて後で行うことができます。レプリケーションは、Amazon RDS インスタンスから移行元のデータベースへのデータベースリンクを使用してセットアップします。

マテリアライズドビューでは、移行先のデータベースから移行元のデータベースへのアクセスを許可する必要があります。次の例では、移行元データベースでアクセスルールが有効になっており、移行先の Amazon RDS データベースが SQLNet を経由して移行元にアクセスすることが許可されています。

  1. 同じパスワードで認証できるユーザーアカウントを、移行先と移行元の Amazon RDS インスタンスの両方に作成します。

    CREATE USER dblink_user IDENTIFIED BY <password> DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp; GRANT CREATE SESSION TO dblink_user; GRANT SELECT ANY TABLE TO dblink_user; GRANT SELECT ANY DICTIONARY TO dblink_user;
  2. 新しく作成した dblink_user を使用して、移行先の Amazon RDS インスタンスから移行元のインスタンスへのデータベースリンクを作成します。

    CREATE DATABASE LINK remote_site CONNECT TO dblink_user IDENTIFIED BY <password> USING '(description=(address=(protocol=tcp) (host=<myhost>) (port=<listener port>)) (connect_data=(sid=<sourcedb sid>)))';
  3. リンクをテストします。

    SELECT * FROM V$INSTANCE@remote_site;
  4. 移行元のインスタンスで、プライマリキーを持つサンプルテーブルとマテリアライズドビューのログを作成します。

    CREATE TABLE customer_0 TABLESPACE users AS (SELECT ROWNUM id, o.* FROM ALL_OBJECTS o, ALL_OBJECTS x WHERE ROWNUM <= 1000000); ALTER TABLE customer_0 ADD CONSTRAINT pk_customer_0 PRIMARY KEY (id) USING INDEX; CREATE MATERIALIZED VIEW LOG ON customer_0;
  5. 移行先の Amazon RDS インスタンスで、マテリアライズドビューを作成します。

    CREATE MATERIALIZED VIEW customer_0 BUILD IMMEDIATE REFRESH FAST AS (SELECT * FROM cust_dba.customer_0@remote_site);
  6. ターゲットの Amazon RDS インスタンスで、マテリアライズドビューを更新します。

    EXEC DBMS_MV.REFRESH('CUSTOMER_0', 'f');
  7. マテリアライズドビューを削除し、PRESERVE TABLE 句を含めて、マテリアライズドビューコンテナテーブルとその内容を保持します。

    DROP MATERIALIZED VIEW customer_0 PRESERVE TABLE;

    保持したテーブル名は、削除したマテリアライズドビューと同じです。