Oracle マテリアライズドビューを使用した移行
大規模なデータセットを効率的に移行するために、Oracle マテリアライズドビューのレプリケーションを使用することができます。レプリケーションを使用すると、移行先テーブルと移行元テーブルとの同期を継続的に維持できます。このため、必要に応じて、後から Amazon RDS に切り替えることができます。
マテリアライズドビューを使用して移行する前に、以下の前提条件を満たしていることを確認してください。
-
移行先のデータベースから移行元のデータベースへのアクセスを設定します。次の例では、移行元データベースでアクセスルールが有効になっており、移行先の RDS for Oracle データベースが SQL*Net を経由して移行元にアクセスすることが許可されています。
-
RDS for Oracle DB インスタンスから移行元のデータベースへのデータベースリンクを作成します。
マテリアライズドビューを使用してデータを移行するには
-
同じパスワードで認証できるユーザーアカウントを、移行元と移行先の RDS for Oracle インスタンスの両方に作成します。次の例では、
dblink_user
という名前のユーザーを作成します。CREATE USER dblink_user IDENTIFIED BY
my-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;注記
セキュリティ上のベストプラクティスとして、ここに示されているプロンプト以外のパスワードを指定してください。
-
新しく作成したユーザーを使用して、移行先の RDS for Oracle インスタンスから移行元のインスタンスへのデータベースリンクを作成します。
CREATE DATABASE LINK remote_site CONNECT TO dblink_user IDENTIFIED BY
my-password
USING '(description=(address=(protocol=tcp) (host=my-host
) (port=my-listener-port
)) (connect_data=(sid=my-source-db-sid
)))';注記
セキュリティ上のベストプラクティスとして、ここに示されているプロンプト以外のパスワードを指定してください。
-
リンクをテストします。
SELECT * FROM V$INSTANCE@remote_site;
-
移行元のインスタンスで、プライマリキーを持つサンプルテーブルとマテリアライズドビューのログを作成します。
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;
-
移行先の RDS for Oracle DB インスタンスで、マテリアライズドビューを作成します。
CREATE MATERIALIZED VIEW customer_0 BUILD IMMEDIATE REFRESH FAST AS (SELECT * FROM cust_dba.customer_0@remote_site);
-
移行先の RDS for Oracle DB インスタンスで、マテリアライズドビューを更新します。
EXEC DBMS_MVIEW.REFRESH('CUSTOMER_0', 'f');
-
マテリアライズドビューを削除し、
PRESERVE TABLE
句を含めて、マテリアライズドビューコンテナテーブルとその内容を保持します。DROP MATERIALIZED VIEW customer_0 PRESERVE TABLE;
保持したテーブル名は、削除したマテリアライズドビューと同じです。