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