Migrar com visualizações materializadas do Oracle - Amazon Relational Database Service

Migrar com visualizações materializadas do Oracle

Para migrar conjuntos de dados grandes de forma eficiente, use a replicação de visualizações materializadas do Oracle. Com a replicação, você pode manter as tabelas de destino sincronizadas com as tabelas de origem. Assim, você pode mudar para o Amazon RDS posteriormente, se necessário.

Antes de poder migrar usando visualizações materializadas, cumpra os seguintes requisitos:

  • Configure o acesso do banco de dados de destino ao banco de dados de origem. No exemplo a seguir, as regras de acesso foram habilitadas no banco de dados de origem para permitir que o banco de dados de destino do RDS para Oracle se conecte à origem via SQL*Net.

  • Crie um link de banco de dados entre a instância de banco de dados do RDS para Oracle e o banco de dados de origem.

Como migrar dados usando visualizações materializadas
  1. Crie uma conta de usuário na instância de origem e na instância de destino do RDS para Oracle que podem se autenticar com a mesma senha. O exemplo a seguir cria um usuário denominado 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;
    nota

    Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.

  2. Crie um link de banco de dados da instância de destino do RDS para Oracle com a instância de origem usando o usuário recém-criado.

    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)))';
    nota

    Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.

  3. Teste o link:

    SELECT * FROM V$INSTANCE@remote_site;
  4. Crie uma tabela de exemplo com uma chave primária e um log de visualização materializada na instância de origem.

    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. Na instância de banco de dados de destino do RDS para Oracle, crie uma visualização materializada.

    CREATE MATERIALIZED VIEW customer_0 BUILD IMMEDIATE REFRESH FAST AS (SELECT * FROM cust_dba.customer_0@remote_site);
  6. Na instância de banco de dados de destino do RDS para Oracle, atualize a visualização materializada.

    EXEC DBMS_MVIEW.REFRESH('CUSTOMER_0', 'f');
  7. Elimine a visualização materializada e inclua a cláusula PRESERVE TABLE para reter a tabela de contêineres de visualização materializada e seus conteúdos.

    DROP MATERIALIZED VIEW customer_0 PRESERVE TABLE;

    A tabela retida tem o mesmo nome que a visualização materializada que foi eliminada.