本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Oracle 具體化檢視進行遷移
若要有效的遷移大型資料庫,您也可以使用 Oracle 的具體化檢視複寫功能。透過複寫,您可以使目標資料表與來源資料表維持同步。因此,如果需要,您可以RDS稍後切換到 Amazon。
請確保您符合下列要求,才能使用具體化檢視進行遷移:
-
設定目標資料庫到來源資料庫之間的存取。在下列範例中,已啟用來源資料庫的存取規則,以允許 Oracle 目標資料庫透過 SQL *Net 連線至來源。RDS
-
建立從 Oracle 資料庫執行個RDS體到來源資料庫的資料庫連結。
若要使用具體化檢視遷移資料
-
在來源和 RDS 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;注意
指定此處所顯示提示以外的密碼,作為安全最佳實務。
-
使用新建立的使用者,從 Oracle 目標執行處理建立至來源執行處理的資料庫連結。RDS
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;
-
在 Oracle 資料庫執行處理的目標RDS上,建立具體化視觀表。
CREATE MATERIALIZED VIEW customer_0 BUILD IMMEDIATE REFRESH FAST AS (SELECT * FROM cust_dba.customer_0@remote_site);
-
在 Oracle 資料庫執行處理的目標RDS上,重新整理具體化視觀表。
EXEC DBMS_MVIEW.REFRESH('CUSTOMER_0', 'f');
-
捨棄具體化檢視,納入
PRESERVE TABLE
子句,以保留具體化檢視容器資料表及其內容。DROP MATERIALIZED VIEW customer_0 PRESERVE TABLE;
前述保留資料表的名稱,與捨棄的具體化檢視相同。