Migrando schema Oracle RDS para um outro Oracle RDS

Este post tem como objetivo auxiliar vocês na migração de um schema oracle de um rds de origem para um outro de destino.

Você recebe a seguinte demanda do seu  gerente fofo  “Preciso atualizar ambiente de homologação com os dados de desenvolvimento.” Fácil né? Fácil, porcaria nenhuma!! Ele só não falou que o banco de dados é o RDS ORACLE, ai ferou né? E ai caboclo sabe fazer?

O titio aqui vai te ajudar!!!!

Passos que devem ser seguidos:

  • Criar uma instância ec2
  • Instalar o Oracle Xe
  • Configurar Swap
  • Gerar o dump no RDS de Origem
  • Criar o Link do servidor local com o RDS Oracle de origem
  • Fazer Download do Dump para o EC2
  • Criar o Link do servidor local com o RDS Oracle de destino
  • Fazer o upload do Dump para o servidor de destino
  • Realizar a importação dos dados no RDS Oracle de destino;

1 – Criar uma instância EC2 AWS

Vou levar em consideração que você já sabe criar uma instância no AWS EC2

2 – Instalar o ORACLE XE

yum install libaio bc flex
Baixar o rpm do oracle-xe-11.x.rpm.zip link aqui
unzip -q oracle-xe-11.2.0-1.0.x86_64.rpm.zip
 cd Disk1
rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm
Ao finalizar a instalação execute o comando abaixo
 /etc/init.d/oracle-xe configure
Vai ocorrer um erro solicitando a criação de uma partição swap

3 – Configurar Swap

Para criação de uma partição swap é só seguir os passos abaixo
sudo dd if=/dev/zero of=/swapfile bs=1024 count=2048k
sudo mkswap /swapfile
sudo swapon /swapfile
chown root:root /swapfile
chmod 0600 /swapfile

Executar novamente  para configurar o oracle
/etc/init.d/oracle-xe configure
4 – Gerar o dump no RDS de Origem

Configurar o tnsnames.ora e adicionar
ORIGEM=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rds-oracle-origem)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)

O comando abaixo você irá criar o dump no RDS ORACLE de origem

./expdp USER_DB_ORIGEM/123456@ORIGEM directory=data_pump_dir schemas=USER_DB_ORIGEMdumpfile=user_db_origem1.dmp

5 – Criar o Link do servidor local com o RDS Oracle de origem

Você deve se conectar no oracle local do ec2 e vamos criar um database link com o RDS Oracle origem e realizar o download do dump para o oracle local

Configurar a variavel ORACLE_HOME

ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export ORACLE_SID=xe
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_HOME

Conectar no banco local utilizando a linha abaixo
sqlplus system/STR_SENHA@XE

ao conectar execute o seguinte  comando
create database link to_origem connect to user_db_origem identified by 123456 using '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rds-oracle-origem)(PORT=1521))(CONNECT_DATA=(SID=ORCL)))';

6 – Fazer Download do Dump para o EC2

Agora vamos realizar o download do dump para o oracle local, se conecte no banco oracle local e execute o comando abaixo

BEGIN
DBMS_FILE_TRANSFER.GET_FILE(
source_directory_object => 'DATA_PUMP_DIR',
source_database => 'to_origem ',
source_file_name => 'user_db_origem.dmp',
destination_directory_object => 'DATA_PUMP_DIR',
destination_file_name => 'user_db_origem.dmp'
);
END;
/

7 – Criar o Link do servidor local com o RDS Oracle de destino

ainda conectado no oracle local do ec2 , vamos criar o link com o RDS Oracle destino para realizar o upload do dump para o RDS Oracle de destino
create database link to_destino connect to user_db_destino identified by 123456 using '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rds-oracle-destino)(PORT=1521))(CONNECT_DATA=(SID=ORCL)))';

8 – Fazer o upload do Dump para o servidor de destino

BEGIN
DBMS_FILE_TRANSFER.PUT_FILE(
source_directory_object => 'DATA_PUMP_DIR',
source_file_name => 'user_db_origem.dmp',
destination_directory_object => 'DATA_PUMP_DIR',
destination_file_name => 'user_db_origem.dmp',
destination_database => 'to_destino'
);
END;
/

9 – Realizar a importação dos dados no RDS Oracle de destino;

Adicionar o tns do RDS Oracle de origem no tnsnames.ora

DESTINO=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rds-oracle-destino)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)

Ultimo passo realizar a importação do schema

./impdp USER_DB_DESTINO/123456@DESTINO DUMPFILE=user_db_origem.dmp DIRECTORY=DATA_PUMP_DIR  schemas=USER_DB_ORIGEM remap_schema=USER_DB_ORIGEM:USER_DB_DESTINO remap_tablespace=USER_DB_ORIGEM:USER_DB_DESTINO table_exists_action=replace

Um comentário sobre “Migrando schema Oracle RDS para um outro Oracle RDS

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s