使用 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;

    保留的表拥有与已删除具体化视图相同的名称。