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
-
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.
-
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.
-
Teste o link:
SELECT * FROM V$INSTANCE@remote_site;
-
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;
-
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);
-
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');
-
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.