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.
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”.
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.
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.
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:
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”:
Clique em “Enable” a partir do menu da regra “ora_p2_dblistener”:
Agora será possível testar a conexão usando o tnsping:
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:
Agora copie o código do arquivo id_rsa.pub e adicione no arquivo /home/oracle/.ssh/authorized_keys no seu servidor na nuvem:
Então faça um teste de conexão a partir da sua VM para o servidor na nuvem:
Antes de duplicar o banco de dados crie os diretórios necessários na nuvem:
Crie um arquivo de parâmetros para a instância standby:
vi /home/oracle/pfile.ora
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.
Crie um arquivo de senhas no servidor standby na nuvem:
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:
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:
Agora acesse o banco de dados na nuvem e inicie o processo de apply:
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.
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:
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.