Os passos abaixo servem para criar uma database Standby Physical no Linux
Considerações:
- Testando no Oracle 11gR2;
Considerações:
- Testando no Oracle 11gR2;
- Homologado na distribuição RHEL 5.5 x64;
- Database: orcl ;
- Database em ARCHIVEMODE ;
- Comunicação entre o Master e Standby deve estar configurada, seja no hosts do Linux, seja por DNS, e importante por TNSNAMES ;
1 - Criando o usuário de replicação no master:
$ set ORACLE_SID=orcl
$ sqlplus /nolog
SQL > CONNECT / AS SYSDBA
SQL > CREATE USER STANDBY
IDENTIFIED BY password
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;
SQL > GRANT CONNECT TO STANDBY;
SQL > GRANT RESOURCE TO STANDBY;
SQL > GRANT DBA TO STANDBY;
SQL > ALTER USER STANDBY ACCOUNT UNLOCK;
SQL > DISCONNECT
2 - Alterar parâmetros de destino dos archives no master:
$ sqlplus /nolog
SQL > ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/data/archive_log/arc1' SCOPE=SPFILE;
SQL > ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='LOCATION=/data/archive_log/arc2' SCOPE=SPFILE;
* Os comandos abaixo geram indisponibilidade:
SQL > SHUTDOWN NORMAL
SQL > STARTUP OPEN
SQL > DISCONNECT
3 - Testando a conta de replicação:
$ sqlplus /nolog
SQL > CONNECT standby/password
SQL > ALTER SYSTEM SWITCH LOGFILE;
system altered.
SQL > DISCONNECT
* Verifique se os archives foram gravados nas pastas setadas como 'LOCATION' no passo 2.
4 - Criando o controlfile do Oracle Physical Standby Database:
$sqlplus /nolog
SQL > CONNECT / AS SYSDBA
SQL > ALTER DATABASE CREATE STANDBY CONTROLFILE AS ‘/data/archive_log\CTLSTB01.ORA’;
5 - Criando o PFILE do Oracle Physical Standby Database:
SQL > CREATE PFILE='/data/archive_log/PFILENFE.ORA' FROM SPFILE;
6 - Realizar as cópias dos datafiles para o '/dados/archive_log':
* Os comandos abaixo geram indisponibilidade:
SQL > SHUTDOWN NORMAL
SQL > DISCONNECT
* Faça a cópia fria via S.O.
7 - Copie os datafiles do Master para o standby(o caminho utilizado no PFILE), password file também. Aloque o controfile criado para o Standby via SCP ou como achar melhor.
8 - Alocar corretamente datafiles no Oracle Standby(idem ao Master).
9 - Iniciar Oracle Standby Physical Standby:
* Se não sabe como criar uma instância podes criar uma database com o mesmo nome da Master e baixá-la depois.
$ set ORACLE_SID=orcl
$ sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP NOMOUNT PFILE='/data/archive_log\PFILE.ORA';
10 - Criar SPFILE no Oracle Standby Physical Standby:
SQL > CREATE SPFILE FROM PFILE='/data/archive_log/PFILE.ORA';
* Após não precisará mais do PFILE.
11 - Mountar a database em modo Standby:
SQL > ALTER DATABASE MOUNT STANDBY DATABASE;
SQL > RECOVER AUTOMATIC STANDBY DATABASE;
* Caso dê algum erro aqui acesse o Master e gere um novo archive conforme passo 3.
12 - Verificar se o Standby está consumindo archives:
* Execute o seguinte comando no Master e no Standby:
SELECT SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
ou
SELECT MAX(sequence#) FROM v$log_history;
O valor deve ser o mesmo, isto significa que a database Standby está consumindo os archives. Se der a diferença de um, basta gerar um novo archive no Master e realizar o procedimento de recovery no Standby.
13 - Automatizar a importação de archives:
* Agende um job no Crontab do Linux no Standby de tempo em tempo, o job deve ter o seguinte conteúdo:
- REPLICA.sh -
#!/bin/bash
# Script to sinc Master and Standby Oracle
source /oracle/.bash_profile # (Aqui deve ter o LD_LIBRARY_PATH, SID, HOME)
sqlplus standby/password@MASTER <<EOS
ALTER SYSTEM SWITCH LOGFILE;
EOS
sqlplus sys/ as sysdba<<EOS
SHUTDOWN IMMEDIATE
STARTUP NOMOUNT
ALTER DATABASE MOUNT STANDBY DATABASE;
RECOVER AUTOMATIC STANDBY DATABASE;
exit
EOS
# EOF
*** Não esqueça de criar uma outra rotina que apague os archives antigos já consumidos pelo Standby.