-
Configuração do Oracle 11g DataGuard
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Produção de 64 bits
Servidor Red Hat Enterprise Linux versão 5.3 (Tikanga)
1. Preparação do ambiente de teste
1. O banco de dados principal e o banco de dados standby possuem a mesma versão Oracle e rodam na mesma plataforma, como Linux, mas o hardware do servidor pode ser diferente.
2. O banco de dados primário deve ser executado no modo de arquivamento e certifique-se de abrir FORCE LOGGING no banco de dados primário para evitar que os usuários gravem redo por meio de nologging e outros métodos, fazendo com que as operações correspondentes não sejam transmitidas ao banco de dados de espera.
3. Os bancos de dados primários e de espera podem ser aplicados em instância única ou arquitetura RAC, e a mesma configuração de proteção de dados pode combinar espera lógica e espera física.
4. Recomenda-se que o banco de dados utilize a mesma arquitetura de armazenamento. Por exemplo, se o ASM/OMF for usado para armazenamento, o ASM/OMF deverá ser usado independentemente de primário ou de espera.
5. O ambiente da biblioteca standby é o mesmo da biblioteca primária.
2. Ajuste a biblioteca principal
1. Altere o banco de dados principal para forçar o modo de log
alterar o registro forçado do banco de dados;
2. Crie uma senha
arquivo orapwd=$ORACLE_HOME/dbs/orapwtest senha=entradas de teste=3
3. Modifique os parâmetros de inicialização da biblioteca principal
db_unique_name ='test01'
db_name especifica o nome do banco de dados, db_unique_name especifica os diferentes nomes do banco de dados (banco de dados primário e banco de dados standby), que é a identificação exclusiva de db_name. Na verdade, trata-se de distinguir bancos de dados com o mesmo db_name para facilitar a aplicação e o gerenciamento. É um parâmetro após 10g.
log_archive_config='DG_CONFIG=(teste01,teste02)'
test01, test02 é .db_unique_name
log_archive_dest_1='location=/u01/app/oracle/arch/test/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=test01'
log_archive_dest_2='SERVICE=test_db_02 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=test02'
Determinar log_archive_dest_state_1
log_archive_dest_state_1= enable #O padrão é enable
log_archive_dest_state_2= ativar
/*As partes a seguir são usadas para alternar o host para o banco de dados standby*/
fal_server=test_db_02
fal_client=test_db_01
standby_file_management = automático
#Se os arquivos ou caminhos do banco de dados primário e secundário forem diferentes
db_file_name_convert='/u01/app/oracle/oradata/test','/u01/app/oracle/oradata/test'
log_file_name_convert='/u01/app/oracle/oradata/test','/u01/app/oracle/oradata/test'
Recomenda-se que o arquivo de parâmetros utilize spfile, para que os parâmetros possam ser modificados utilizando comandos da biblioteca ininterrupta.
4. Certifique-se de que o banco de dados esteja sendo executado no modo archivelog
SQL> lista de logs de arquivo
Modo de log do banco de dados Sem modo de arquivamento
Arquivamento automático desativado
Destino do arquivo USE_DB_RECOVERY_FILE_DEST
Sequência de log on-line mais antiga 2
Sequência de log atual 4
Ajuste o banco de dados para o modo archivelog
SQL> desligamento imediato
SQL> montagem de inicialização
SQL> alterar archivelog do banco de dados;
SQL> alterar banco de dados aberto;
5. Crie um log de espera no banco de dados principal (para comutação)
alterar banco de dados recuperar banco de dados em espera gerenciado cancelar;#Não executado
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 SIZE 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 SIZE 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 SIZE 50M;
mkdir -p /u01/app/oracle/standby/test
SQL>alter database add standby logfile group 4('/u01/app/oracle/standby/test/stdby_redo04.log') tamanho 50M;
SQL>alter database add standby logfile group 5('/u01/app/oracle/standby/test/stdby_redo05.log') tamanho 50M;
SQL>alter database add standby logfile group 6('/u01/app/oracle/standby/test/stdby_redo06.log') tamanho 50M;
SQL>alter database recuperar banco de dados stand-by gerenciado desconectado da sessão;#Não executado
3. Crie banco de dados standby
1. Crie pwdfile no banco de dados standby
arquivo orapwd=$ORACLE_HOME/dbs/orapwtest senha=entradas de teste=3
A senha deve ser a mesma do banco de dados primário
2. Modifique os parâmetros de inicialização do banco de dados standby que são diferentes daqueles do banco de dados primário da seguinte maneira:
db_unique_name=test02
log_archive_dest_1='location=/u01/app/oracle/arch/test valid_for=(all_logfiles,all_roles) db_unique_name=test02'
log_archive_dest_2='service=test_db_01 ARCH ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=test01'
fal_client='test_db_02'
fal_server='test_db_01'
db_file_name_convert='/u01/app/oracle/oradata/TEST01/datafile','/u01/app/oracle/oradata/TEST02/datafile'
log_file_name_convert='/u01/app/oracle/oradata/TEST01/onlinelog','/u01/app/oracle/oradata/TEST02/onlinelog', '/u01/app/oracle/flash_recovery_area/TEST01/onlinelog','/u01 /app/oracle/flash_recovery_area/TEST01/onlinelog'
Após a modificação, use a seguinte instrução para visualizar
SQL> selecione * de V$DATAGUARD_CONFIG;
DB_UNIQUE_NAME
-------------------------------------------------- ----------------------------------------
teste01
teste02
4. Crie os diretórios correspondentes, diretório de arquivo de despejo, diretório de arquivo de dados e diretório de arquivo
mkdir -p /u01/app/oracle/oradata
mkdir -p /u01/app/oracle/flash_recovery_area
mkdir -p /u01/app/oracle/arch/test
5. Configure os arquivos listener.ora e tnsnames.ora do banco de dados standby para reiniciar a escuta com o banco de dados principal e verificar se o tnsping pode passar.
6. Inicie o banco de dados standby para o estado nomount
SQL> inicialização nomount
7. Use a função duplicada do RMAN para criar um banco de dados standby 11g pode copiá-lo diretamente para o banco de dados standby sem fazer um backup:
RMAN> auxiliar rman /
conectar destino sys/test@test_db_01
banco de dados de destino duplicado para standby dorecover nofilenamecheck;
Verifique o status do banco de dados standby
SQL> selecione database_role,protection_mode,protection_level de v$database;
SQL> selecione sequência#, aplicado a partir de v$archived_log ordem por sequência#;
8. Inicie a biblioteca principal do aplicativo Redo
SQL> altera o log de arquivo do sistema atual;
Banco de dados em espera, 11g pode abrir o log do aplicativo de banco de dados somente leitura
SQL> alterar banco de dados aberto somente leitura;
SQL> alter banco de dados recupera banco de dados em espera gerenciado desconectado da sessão;
Você também pode usar o banco de dados de reserva gerenciado para recuperação do banco de dados usando a desconexão do arquivo de log atual do log do aplicativo;
Se não houver uso do arquivo de log atual, aplique o log arquivado em espera.
O uso do arquivo de log atual é aplicado quando o log é transferido para o redo log de espera. Ele é em tempo real e deve ter um redo log de espera.
4. Modo de gerenciamento e modo somente leitura do servidor em espera
1. Inicialize no modo de gerenciamento
SQL>desligamento imediato;
SQL>inicialização nomount;
SQL>alter banco de dados em espera de montagem do banco de dados;
SQL>alter database recupera a desconexão do banco de dados standby gerenciado da sessão;
2. Inicialize no modo somente leitura
SQL>desligamento imediato;
SQL>inicialização nomount;
SQL>alter banco de dados em espera de montagem do banco de dados;
SQL>alter banco de dados aberto somente leitura;
(3) Se você entrar no modo somente leitura no modo de recuperação de gerenciamento
SQL> recuperar cancelamento do banco de dados em espera gerenciado;
SQL> alterar banco de dados aberto somente leitura;
Neste momento, você pode adicionar arquivos de dados temporários ao banco de dados (não é feito backup deles durante o backup a quente)
como
alterar temperatura do espaço de tabela adicionar tempfile '/u02/oradata/test/temp01.dbf' tamanho 100M;
5. Do modo somente leitura ao modo de recuperação gerenciada
SQL> recupera a desconexão do banco de dados standby gerenciado da sessão;
5. Alternar entre bancos de dados ativos e em espera
parada lsnrctl
SQL> altera o commit do banco de dados para alternar para o modo de espera físico com encerramento da sessão;
SQL> desligamento imediato;
SQL> montagem de inicialização;
SQL> alter banco de dados recupera desconexão do banco de dados em espera gerenciado;
lsnrctl iniciar
Backup
SQL> altere o commit do banco de dados para alternar para o primário;
SQL> desligamento imediato;
SQL> inicialização
6. O anexo abaixo é o conteúdo do arquivo de configuração:
ouvinte.ora
OUVINTE =
(DESCRIÇÃO=
(ENDEREÇO = (PROTOCOLO = TCP)(HOST = oracle6)(PORTA = 1521))
)
tnsnames.ora
TESTE_DB_02 =
(DESCRIÇÃO=
(ADDRESS_LIST =
(ENDEREÇO = (PROTOCOLO = TCP)(HOST = 192.168.202.5)(PORTA = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = teste02)
)
)
TEST_DB_01 =
(DESCRIÇÃO=
(ADDRESS_LIST =
(ENDEREÇO = (PROTOCOLO = TCP)(HOST = 192.168.202.6)(PORTA = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = teste01)
)
)
arquivo
teste.__db_cache_size=1526726656
teste.__java_pool_size=16777216
teste.__large_pool_size=16777216
test.__oracle_base='/u01/app/oracle'#ORACLE_BASE definido do ambiente
teste.__pga_gregate_target=1342177280
teste.__sga_target=2013265920
teste.__shared_io_pool_size=0
teste.__shared_pool_size=436207616
teste.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/test/adump'
*.audit_trail='banco de dados'
*.compatível='11.1.0.0.0'
*.control_files='/u01/app/oracle/oradata/test/control01.ctl','/u01/app/oracle/oradata/test/control02.ctl','/u01/app/oracle/oradata/test/ control03.ctl'
*.db_block_size=8192
*.db_domain='greatsky.com'
*.db_name='teste'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.db_unique_name='test01'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOLO=TCP) (SERVICE=testXDB)'
*.fal_client='TEST_DB_01'
*.fal_server='TEST_DB_02'
*.log_archive_config='dg_config=(test01,test02)'
*.log_archive_dest_1='location=/u01/app/oracle/arch/test/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=test01'
*.log_archive_dest_2='SERVICE=test_db_02 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=test02'
*.memory_target=3347054592
*.open_cursors=300
*.processos=150
*.remote_login_passwordfile='EXCLUSIVO'
*.service_names='test.greatsky.com','test01.greatsky.com'
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'