Oracle 具体化视图 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Oracle 具体化视图

您还可以使用 Oracle 具体化视图复制功能高效地迁移大型数据集。复制功能可以使目标表与源表持续保持同步,因此,如需要,可在稍后完成向 Amazon RDS 的实际转换。设置复制功能时,需使用 Amazon RDS 实例到源数据库的数据库链接。

具体化视图的一项要求是,允许从目标数据库访问源数据库。在以下示例中,源数据库启用了访问规则,因此, Amazon RDS 目标数据库可通过 SQLNet 与源数据库连接。

  1. 在源实例和 Amazon RDS 目标实例上创建用户账户,并使用同一密码进行身份验证。

    CREATE USER dblink_user IDENTIFIED BY <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. 使用新创建的 dblink_user 创建 Amazon RDS 目标实例到源实例的数据库链接。

    CREATE DATABASE LINK remote_site CONNECT TO dblink_user IDENTIFIED BY <password> USING '(description=(address=(protocol=tcp) (host=<myhost>) (port=<listener port>)) (connect_data=(sid=<sourcedb 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. 在目标 Amazon RDS 实例上,创建具体化视图。

    CREATE MATERIALIZED VIEW customer_0 BUILD IMMEDIATE REFRESH FAST AS (SELECT * FROM cust_dba.customer_0@remote_site);
  6. 在目标 Amazon RDS 实例上,刷新具体化视图。

    EXEC DBMS_MV.REFRESH('CUSTOMER_0', 'f');
  7. 删除具体化视图并包括 PRESERVE TABLE 子句,以便保留具体化视图容器表及其内容。

    DROP MATERIALIZED VIEW customer_0 PRESERVE TABLE;

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