Oracle Cloud: Criando um banco de dados standby na nuvem para um banco de dados On-premises

Por Kamran Aghayev A.(Oracle ACED), Joel Pérez , & Franky Weber F. (OCE)
Publicado en Abril 2017

Se você tem um banco de dados de produção e planeja criar um banco de dados standby em um local geográfico diferente, a Oracle Cloud com certeza é uma excelente opção. Neste artigo você acompanhará um passo-a-passo para criar um banco de dados standby na Oracle Cloud para o seu banco de dados on-premises.

Vamos começar!

Primeiramente faça login na sua conta da Oracle Cloud, acesse o Oracle DatabaseCloud Service e crie um novo serviço. Forneça o nome do serviço, chaves SSH, escolha a opção “Enterprise Edition – Extreme Performance” no software Edition e clique em “Next”.

01

Nós vamos criar um banco de dados standby baseado em um banco de dados de produção on-premises, então na tela seguinte forneça qualquer nome para o banco de dados, pois vamos excluí-lo depois que estiver criado e vamos criar um banco de dados standby a partir do comando DUPLICATE DATABASE do RMAN.

02

Revise a configuraçãoo e clique em “Create” para criar uma nova instância DatabaseCloud Service.

São necessários somente 20 minutos para criar uma nova máquina, instalar o software Oracle e criar um novo banco de dados na nuvem.

Seguindo, crie uma nova máquina virtual no seu computador de estudos, ou no seu ambiente de laboratório. Instale o Oracle Database 11.2.0.4 no Linux (OEL, de preferência) e adicione 2 placas de rede – “Host-onlyAdapter” e “BridgedAdapter”. A “Host-only” é usada para se conectar à VM a partir do host e a “Bridge” é usada para conectar da VM para o mundo (internet, Cloud Service, etc). Habilite ambas as placas de rede, tenha certeza que você tem uma conexão com a internet, edite o arquivo tnsnames.ora com a seguinte configuração e use o comando tnsping para testar o acesso ao servidor que está na nuvem.

03

Use a chave privada para se conectar à VM na nuvem usando o putty e exclua o banco de dados criado na nuvem.

Efetue a exclusão do banco de dados:

04

Antes de tentar se conectar à nova instância na nuvem você precisa habilitar a regra de acesso dblistener. Abra o painel do databaseservice e a partir do menu clique em “Access Rule”:

05

Clique em “Enable” a partir do menu da regra “ora_p2_dblistener”:

06

Agora será possível testar a conexão usando o tnsping:

07

Para se conectar ao servidor na nuvem de fora é necessário configurar o SSH. Abra sua VM local, acesse o diretório oculto .ssh e gere novas chaves utilizando o ssh-keygen como apresentado abaixo:

08

Agora copie o código do arquivo id_rsa.pub e adicione no arquivo /home/oracle/.ssh/authorized_keys no seu servidor na nuvem:

09

Então faça um teste de conexão a partir da sua VM para o servidor na nuvem:

10

Antes de duplicar o banco de dados crie os diretórios necessários na nuvem:

11

Crie um arquivo de parâmetros para a instância standby:

vi /home/oracle/pfile.ora 12

Conecte-se usando o SQL*Plus, crie um spfile a partir do pfile (lembre-se de ajustar os parâmetros corretamente para o seu ambiente, principalmente os parâmetros *_file_name_convert) e inicie a instância no modo NOMOUNT.

13 14

Crie um arquivo de senhas no servidor standby na nuvem:

15

Conecte-se a ambas instâncias, target e auxiliary, e então duplique o banco de dados:



[oracle@ocm11g dbs]$rman target sys/oracle@PROD auxiliary sys/oracle@STBDB

connected to target database: PROD (DBID=345613202)

connected to auxiliary database: PROD (not mounted)



RMAN> duplicate target database for standby from active database;

Starting Duplicate Db at 20-JAN-17

using target database control file instead of recovery catalog

allocated channel: ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: SID=171 device type=DISK



contentsofMemory Script:

{

backup as copy reuse

targetfile  ‘/u03/oracle/product/11.2.4/db_1/dbs/orapwPROD’ auxiliary format

 ‘/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwSTBDB’   ;

}

executing Memory Script



Starting backup at 20-JAN-17

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=36 device type=DISK

Finished backup at 20-JAN-17



contents of Memory Script:

{

   backup as copy current controlfile for standby auxiliary format  
   ‘/home/oracle/oradata/STBDB/control01.ctl’;

}

executing Memory Script



Starting backup at 20-JAN-17

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile copy

copying standby control file

output file name=/u03/oracle/product/11.2.4/db_1/dbs/snapcf_PROD.f 
tag=TAG20170120T145657 RECID=3 STAMP=933778620

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:02:05

Finished backup at 20-JAN-17



contents of Memory Script:

{

sql clone ‘alter database mount standby database’;

}

executing Memory Script



sql statement: alter database mount standby database



contentsofMemory Script:

{

set newname for tempfile  1 to

 “/home/oracle/oradata/STBDB/temp01.dbf”;

   switch clone tempfile all;

   set newname for datafile  1 to

 “/home/oracle/oradata/STBDB/system01.dbf”;

   set newname for datafile  2 to

 “/home/oracle/oradata/STBDB/sysaux01.dbf”;

   set newname for datafile  3 to

 “/home/oracle/oradata/STBDB/undotbs01.dbf”;

   set newname for datafile  4 to

 “/home/oracle/oradata/STBDB/users01.dbf”;

   backup as copy reuse

datafile  1 auxiliary format

 “/home/oracle/oradata/STBDB/system01.dbf”   datafile

 2 auxiliary format

 “/home/oracle/oradata/STBDB/sysaux01.dbf”   datafile

 3 auxiliary format

 “/home/oracle/oradata/STBDB/undotbs01.dbf”   datafile

 4 auxiliary format

 “/home/oracle/oradata/STBDB/users01.dbf”   ;

sql ‘alter system archive log current’;

}

executing Memory Script

executing command: SET NEWNAME

renamed tempfile 1 to /home/oracle/oradata/STBDB/temp01.dbf in 
control file

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME



Starting backup at 20-JAN-17

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile copy

input datafile file number=00001 name=/u03/oracle/oradata/PROD/
system01.dbf

output file name=/home/oracle/oradata/STBDB/system01.dbf 
tag=TAG20170120T145917

channel ORA_DISK_1: datafile copy complete, elapsed time: 02:14:37

channel ORA_DISK_1: starting datafile copy

input datafile file number=00002 name=/u03/oracle/oradata/PROD/
sysaux01.dbf

output file name=/home/oracle/oradata/STBDB/sysaux01.dbf 
tag=TAG20170120T145917

channel ORA_DISK_1: datafile copy complete, elapsed time: 01:24:17

channel ORA_DISK_1: starting datafile copy

input datafile file number=00003 name=/u03/oracle/oradata/PROD/
undotbs01.dbf

output file name=/home/oracle/oradata/STBDB/undotbs01.dbf 
tag=TAG20170120T145917

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:05:15

channel ORA_DISK_1: starting datafile copy

input datafile file number=00004 name=/u03/oracle/oradata/PROD/
users01.dbf

output file name=/home/oracle/oradata/STBDB/users01.dbf 
tag=TAG20170120T145917

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:56

Finished backup at 20-JAN-17



sql statement: alter system archive log current



contentsofMemory Script:

{

switch clone datafile all;

}

executing Memory Script



datafile 1 switched to datafile copy

input datafile copy RECID=3 STAMP=933824671 file name=/home/
oracle/oradata/STBDB/system01.dbf

datafile 2 switched to datafile copy

input datafile copy RECID=4 STAMP=933824671 file name=/home/
oracle/oradata/STBDB/sysaux01.dbf

datafile 3 switched to datafile copy

input datafile copy RECID=5 STAMP=933824671 file name=/home/
oracle/oradata/STBDB/undotbs01.dbf

datafile 4 switched to datafile copy

input datafile copy RECID=6 STAMP=933824671 file name=/home/
oracle/oradata/STBDB/users01.dbf

Finished Duplicate Db at 20-JAN-17



RMAN>

Conecte-se ao banco de dados standby na nuvem e consulte a view V$DATABASE:

16

Tenha certeza de ajustar o parâmetro LOG_ARCHIVE_DEST_2 no banco de dados on-premises e especificar o banco de dados que está rodando na nuvem:

17

Agora acesse o banco de dados na nuvem e inicie o processo de apply:

18

Ok, o banco de dados standby está pronto. Execute alguns switches nos logfiles, crie uma nova tabela, faça switch logfile novamente. Acesse o servidor standby e verifique o alert.log para ver se os logs estão sendo aplicados no banco de dados standby.

19

Pare o processo de recover, abra o banco de dados standby em modo READ ONLY e verifique se você consegue consultar a tabela criada no banco de dados on-premises:

20

21

22

Como você pode ver a tabela foi replicada para o banco de dados standby que está na Oracle Cloud.

Esperamos que este artigo possa ser útil para seu aprendizado sobre banco de dados na nuvem.

KamranAghayev A. é um Oracle Certified Master, Oracle ClusterwareCertified Expert e RAC ImplementationSpecialist, Oracle Certifie Professional (9i, 10g, 11g) e Oracle ACE Director, trabalha como líder de uma equipe de DBAs na AzerCell Telecom LLC. É autor dos livros Oracle Backup and Recovery: Expert secrets for using RMAN and Data Pump e do livro Oracle Certified Master 11g Exam Guide. Elemantém o popular blog kamranagayev.com ondecompartilhasuasexperiências e contribui regularmente para grupos, fóruns, encontros de grupos de usuários e eventos ao redor do mundo. É umpalestrantefrequente e jáapresentouemvários países, maisrecentemente nos EUA, Japão, China, Índia, Argentina, Uruguai, Panamá, Costa Rica, México, Guatemala, Finlândia e Turquia. É o presidente do Azerbaijan Oracle UserGroup (AzerOUG) e tambémleciona aulas sobre administração de banco de dados Oracle na QafqazUniversity.

Joel Pérez é um DBA (Oracle ACE Director, MaximumAvailability OCM, OCM CloudAdmin. & OCM12c/11g) Especialista commais de 16 anos de experiência real no mundo da tecnologia Oracle, especializada na concepção e implementação de soluções: Nuvem, alta disponibilidade, recuperação de desastres, Upgrades, replicação e toda a área relacionada com bancos de dados Oracle. Joel serve como "Chief Technologist & MAA, TEM Architect" para www.Enmotech.com Yunhe ENMO (Beijing) Technology Co. Ltd. Beijing, China. OCM Perfil Joel Perez: http://education.oracle.com/education/otn/JoelPerez.htm

Franky Weber Faustatua como administrador de banco de dados Oracle e MySQL no PagSeguro, tem 26 anos, é graduado emTecnologiaem Bancos de Dados e iniciousuacarreiratrabalhandonumprojeto internacional da Volkswagen com os bancos de dados DB2 da IBM, SQL Server da Microsoft e tambémcom o Oracle e desde o iníciodirecionouseusestudos para as tecnologias Oracle. É especialista emtecnologias de Alta Disponibilidade como RAC, Dataguard e GoldenGate e compartilhaseusconhecimentos no blog loredata.com.br. Possui as certificações OCE SQL, OCA 11g, OCP 12c, OCS RAC 12c e OCS Linux 6.

Este artigo foi revisto pela equipe de produtos Oracle e está em conformidade com as normas e práticas para o uso de produtos Oracle.