1. Pre-requisitos - Preparando a infra-estrutura
1.1 Primary Database
- Archive log, o banco de dados de produção deve estar obrigatóriamente em modo de archivelog.
SQL> select log_mode from v$database;
LOG_MODE
------------
ARCHIVELOG
LOG_MODE
------------
ARCHIVELOG
- Force Logging, deve-se habilitar o force logging de acordo com o procedimento a seguir:
- Standby Redologs, este passo é opcional caso estiver configurando um dataguard com protection mode em max performance
- Iniciar instancia com spfile, obrigatório para o duplicate.
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /oracle/app/oracle/product/11.
2.0.3/db_1/dbs/spfileorcl.ora
- Password file, deve ser configurado em ambos servidores com a mesma senha
- Parametrização, segue os ajustes necessários para configurar o ambiente produtivo
alter system set LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST valid_for=(all_logfiles, all_roles)';
alter system set LOG_ARCHIVE_DEST_2='SERVICE=ORCLSTBY NOAFFIRM ASYNC valid_for=(online_logfile,primary_role) db_unique_name=ORCL';
alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE;
alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE;
alter system set FAL_SERVER=ORCLSTBY;
alter system set FAL_CLIENT=ORCL;
- Oracle Network
ADR_BASE_LISTENER_ORCL = /oracle/app/oracle
SID_LIST_LISTENER_ORCL =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orclstdby)
(ORACLE_HOME = /oracle/app/oracle/product/11.2.0.3/db_1)
(SID_NAME = orclstdby)
)
)
LISTENER_ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = os-indaia-orcl-stb)(PORT = 1523))
)
Tnsnames
ORCLSTDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = os-indaia-orcl-stb)(PORT = 1523))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCLSTBY)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = os-indaia-orcl-prod)(PORT = 1523))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
1.2 Standby Database
- Password File - Quando ser faz um duplicate from active (o qual irei utilizar), é obrigatório que o password file contenha a mesma senha da produção, portanto uma boa pratica é copia-lo, porém deve ser renomeado da seguinte forma: $ORACLE_HOME/dbs/orapw
[oracle@os-indaia-orcl-stb dbs]$ cp orcl_pwd.ora orapworclstby
- Parametrização Standby, Criar o arquivo de inicialização (pfile) configurado para standby
DB_UNIQUE_NAME=orcl
DB_BLOCK_SIZE=8192
remote_login_passwordfile=exclusive
sec_case_sensitive_logon=FALSE
- Diretórios, como o rman não criar as estruturas de diretórios é necessário fazer isto manualmente.
- Configurar arquivos de conexão (tnsnames e listener)
ADR_BASE_LISTENER_ORCLSTBY = /oracle/app/oracle
SID_LIST_LISTENER_ORCLSTBY =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orclstby)
(ORACLE_HOME = /oracle/app/oracle/product/11.2.0.3/db_1)
(SID_NAME = orclstby)
)
)
LISTENER_ORCLSTBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = os-indaia-orcl-stb)(PORT = 1523))
)
Já o tnsnames pode ser utilizado o mesmo da instancia de produção
2. Verificar Conectividade
Realizar o teste em ambos os servidores
sqlplus sys/oracle@orcl as sysdba
sqlplus sys/oracle@orclstby as sysdba
3. Realizar o Duplicate do banco de dados
Pode ser feito tanto atraves do rman quanto de um backup manual , porém o recomendado é sempre RMAN. Com o RMAN temos uma variação enorme de como pode ser feito, no 9i temos que criar o controlfile for standby, já no 10 essa necessidade morreu, e no 11g já temos a possibilidade de fazer o duplicate sem um backup, será este o utilizado neste artigo, porém vou divulgar uma lista com exemplo de possiveis outros duplicates.
rman
connect target sys/oracle@orcl
connect auxiliary sys/oracle@orclstby
run {
allocate channel prmy1 type disk;
allocate auxiliary channel stby type disk;
duplicate target database for standby from active database
spfile
parameter_value_convert 'orcl','orclstby'
set db_unique_name='orcl'
set db_file_name_convert='orcl','orclstby'
set log_file_name_convert='orcl','orclstby'
set log_archive_max_processes='5'
set fal_client='orclstby'
set fal_server='orcl'
set standby_file_management='AUTO'
set log_archive_config='dg_config=(orcl,orclstby)'
set log_archive_dest_2='service=orcl ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=orcl'
;
}
Ao termino uma mensagem similar a esta deve aparecer indicando o termino com sucesso:
sql statement: alter system archive log current
contents of Memory Script:
{
switch clone datafile all;
}
executing Memory Script
datafile 1 switched to datafile copy
input datafile copy RECID=1 STAMP=835194950 file name=+DG_DATA/orcl/datafile/system.262.835194755
datafile 2 switched to datafile copy
input datafile copy RECID=2 STAMP=835194951 file name=+DG_DATA/orcl/datafile/sysaux.261.835194859
datafile 3 switched to datafile copy
input datafile copy RECID=3 STAMP=835194951 file name=+DG_DATA/orcl/datafile/undotbs1.260.835194935
datafile 4 switched to datafile copy
input datafile copy RECID=4 STAMP=835194951 file name=+DG_DATA/orcl/datafile/users.259.835194941
datafile 5 switched to datafile copy
input datafile copy RECID=5 STAMP=835194951 file name=+DG_DATA/orcl/datafile/tbs_reorg.263.835194629
Finished Duplicate Db at 26-DEC-13
released channel: prmy1
released channel: stby
4. Iniciar o recover
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(ORCLSTBY,ORCL)';
alter system set LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST, valid_for=(all_logfiles, all_roles)';
alter system set LOG_ARCHIVE_DEST_2='SERVICE=ORCLSTBY NOAFFIRM ASYNC valid_for=(online_logfile,primary_role) db_unique_name=ORCL';
alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE;
alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE;
alter system set FAL_SERVER=ORCL;
alter system set FAL_CLIENT=ORCLSTBY;
Para iniciar o recover no standby basta usar o comando a seguir:
SQL> alter database recover managed standby database disconnect from session;
Database altered.
Próximo Passo: Dataguard - Parte 3 - Criando o Dataguard Broker
Nenhum comentário:
Postar um comentário