使用 Oracle 具體化檢視進行遷移 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Oracle 具體化檢視進行遷移

若要有效的遷移大型資料庫,您也可以使用 Oracle 的具體化檢視複寫功能。透過複寫,您可以使目標資料表與來源資料表維持同步。因此,您可以視需要之後切換為 Amazon RDS。

請確保您符合下列要求,才能使用具體化檢視進行遷移:

  • 設定目標資料庫到來源資料庫之間的存取。在以下範例中,來源資料庫上所啟用的存取規則,會允許 RDS for Oracle 目標資料庫透過 SQL*Net 連線到來源。

  • 建立從 RDS for Oracle 資料庫執行個體到來源資料庫之間的資料庫連結。

若要使用具體化檢視遷移資料
  1. 在來源和 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;
    注意

    指定此處所顯示提示以外的密碼,作為安全最佳實務。

  2. 使用您新建立的使用者,建立從 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)))';
    注意

    指定此處所顯示提示以外的密碼,作為安全最佳實務。

  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. 在目標 RDS for Oracle 資料庫執行個體上建立具體化檢視。

    CREATE MATERIALIZED VIEW customer_0 BUILD IMMEDIATE REFRESH FAST AS (SELECT * FROM cust_dba.customer_0@remote_site);
  6. 在目標 RDS for Oracle 資料庫執行個體上重新整理具體化檢視。

    EXEC DBMS_MVIEW.REFRESH('CUSTOMER_0', 'f');
  7. 捨棄具體化檢視,納入 PRESERVE TABLE 子句,以保留具體化檢視容器資料表及其內容。

    DROP MATERIALIZED VIEW customer_0 PRESERVE TABLE;

    前述保留資料表的名稱,與捨棄的具體化檢視相同。