Banco de Dados

10 abr, 2007

Data Guard na versão 10g Release 2 (10.2) – Parte II

Publicidade

Nesse novo artigo, iremos configurar o Banco no modo Lógico, sendo que nesse modo podemos abri-lo no modo READ-WRITE.

Para isso é necessário que o banco Físico mostrado no artigo anterior esteja criado e funcionando.

Figura 2.0 – Configurando destinos do banco primário e secundário no modo lógico:

Esse caso é um pouco diferente do descrito no artigo anterior, conforme mostra a figura 2.0.

O banco primário envia as alterações na forma de SQL e diretamente para o grupo de redo, Standby logs, criado anteriormente.

Não é necessário o Switch de log para que as alterações sejam enviadas para o banco secundário, mas apenas um commit.

A seguir mostraremos como configurar o Data Guard no modo lógico:

Covertendo para Logical Standby

1º) Encontre tabelas sem o identificador lógico único na base de dados.

SQL> SELECT OWNER, TABLE_NAME FROM DBA_LOGSTDBY_NOT_UNIQUE
  2> WHERE (OWNER, TABLE_NAME) NOT IN 
  3> (SELECT DISTINCT OWNER, TABLE_NAME FROM DBA_LOGSTDBY_UNSUPPORTED) 
  4> AND BAD_COLLUMN = 'Y'

2º) Altere o arquivo de parâmetro do banco primário conforme abaixo:

LOG_ARCHIVE_DEST_3=
 'LOCATION=/home/oracle/primary/arch2/
  VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) 
  DB_UNIQUE_NAME=primary'
LOG_ARCHIVE_DEST_STATE_3=ENABLE

3º) Construa o dicionário nos dados de redo:

EXECUTE DBMS_LOGSTDBY.BUILD;

4º) Coverta o banco Standy pra lógico:

ALTER DATABASE RECOVER TO LOGICAL STANDBY standy;

5º) Crie um novo arquivo de senha pra o Banco Standy:

orapwd file=orapwstandy file=xxxx entries=5

6º) Modifique o arquivo de parâmetro do banco Standy, conforme abaixo:

LOG_ARCHIVE_DEST_1=
  'LOCATION=/home/oracle/standy/arc/
   VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES)
   DB_UNIQUE_NAME=standy'
LOG_ARCHIVE_DEST_2=
  'SERVICE=primary LGWR ASYNC
   VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
   DB_UNIQUE_NAME=primary'
LOG_ARCHIVE_DEST_3=
  'LOCATION=/home/oracle/standy/arch2
   VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE)
   DB_UNIQUE_NAME=standy'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
LOG_ARCHIVE_DEST_STATE_3=ENABLE

7º) inicie o banco Standy com resetlogs:

SQL> SHUTDOWN;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE OPEN RESETLOGS;

8º) Inicíe o SQL Apply em Real Time:

ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

Após a inicialização do SQL Apply, cheque se o banco secundário está recendo as modificações do banco primário da seguinte forma:

  • Entre com o usuário utilizado anteriormente para testar o modo físico do Data Guard.
  • Faça um insert na tabela criada anteriormente:

SQL> insert into t1 select * from t1;

SQL> commit;

SQL> select count(1) from t1;

Vá agora ao banco secundário e cheque se o número de linhas está conforme ao do banco primário:

SQL> select count(1) from t1;

OBS: Nunca utilize o usuário SYS E SYSTEM para criar objetos, já que os mesmo são criados no dicionário de dados do banco e corrompe o dicionário de dados de redo.

Abaixo segue algumas views que podem ser consultadas para monitoramento do SQL APPLY:

  • V$LOGSTDBY
  • DBA_LOGSTDBY_LOG
  • V$LOGSTDBY_STATS
  • DBA_LOGSTDBY_PROGRESS

Na próxima iremos configurar o Data Guard Broker.

Até a próxima!