Adicionando "redo
logs" no banco de dados Standby
Adicionar "redo logs"
no banco de dados não afeta o banco de dados Standby. Porém durante transição
alguns problemas de desempenho podem ocorrer. Logo, sempre que um arquivo de "redo log"
for adicionado ou removido do banco de dados primário, o mesmo deve ser
executado manualmente no banco de dados Standby. Abaixo o procedimento.
1. Verificar os membros no banco de dados Standby.
SQL> select member from v$logfile;
MEMBER
------------------------------
+DATA/test/group/group_3.264.3
SQL> select member from v$logfile;
MEMBER
------------------------------
+DATA/test/group/group_3.264.3
+DATA/test/group/group_2.264.3
+DATA/test/group/group_1.264.3
2. Cancelar o processo de "recover" do banco de dados Standby.
SQL> alter database recover managed standby database cancel;
Database altered.
3. Verificar o parâmetro "standby_file_management" e configurá-lo para MANUAL.
SQL> show parameter standby_file
NAME TYPE VALUE
------------------------------------ ----------- ------
standby_file_management string AUTO
SQL> alter system set
standby_file_management=manual scope=both;
System altered.
SQL> show parameter standby_file
NAME TYPE VALUE
------------------------------------ ----------- ------
standby_file_management string MANUAL
SQL> show parameter standby_file
NAME TYPE VALUE
------------------------------------ ----------- ------
standby_file_management string MANUAL
4. Uma vez alterado o parâmetro, pode-se adicionar os "redo logs"
no banco de dados Standby.
SQL> alter database add logfile group 4 '+DATA' size 100M;
Database altered.
SQL> alter database add logfile group 5 '+DATA' size 100M;
SQL> alter database add logfile group 5 '+DATA' size 100M;
Database altered.
SQL> alter database add logfile group 6 '+DATA' size 100M;
SQL> alter database add logfile group 6 '+DATA' size 100M;
Database altered.
SQL> alter database add standby logfile group 7 '+DATA' size 100M;
SQL> alter database add standby logfile group 7 '+DATA' size 100M;
Database altered.
SQL> alter database add standby logfile group 8 '+DATA' size 100M;
Database altered.
SQL> alter database add standby logfile group 9 '+DATA' size 100M;
Database altered.
SQL> alter database add standby logfile group 10 '+DATA' size 100M;
Database altered.
5. Verificação dos "redo logs".
SQL> col members for 999999999
SQL> set lines 120 pages 1000
SQL> col members for 999999999
SQL> set lines 120 pages 1000
SQL> select group#, members, status from v$log;
GROUP# MEMBERS STATUS
---------- ---------- ----------------
1 1 CLEARING
2 1 CLEARING
3 1 CLEARING
4 1 UNUSED
5 1 CLEARING_CURRENT
6 1 UNUSED
6 rows selected.
SQL> select member from v$logfile order by 1 desc;
MEMBER
-------------------------------
+DATA/test/group/group_6.264.3
+DATA/test/group/group_5.264.3
+DATA/test/group/group_4.264.3
+DATA/test/group/group_3.264.3
+DATA/test/group/group_2.264.3
+DATA/test/group/group_1.264.3
6 rows selected.
6. Verificação dos standby "redo logs".
SQL> set lines 300
SQL> col member format a50
SQL> select substr(a.MEMBER,1,50)
MEMBER
from
v$logfile a, v$standby_log b
where
a.group# = b.group#
order
by 1;
MEMBER
-------------------------------
+DATA/test/group/group_7.264.3
MEMBER
-------------------------------
+DATA/test/group/group_7.264.3
+DATA/test/group/group_8.264.3
+DATA/test/group/group_9.264.3
+DATA/test/group/group_10.264.3
4 rows selected.
7. Voltar o parâmetro "standby_file_management" para AUTO.
SQL> alter system set standby_file_management=auto scope=both;
System altered.
8. Ativar o processo de "recover" no banco de dados Standby.
SQL> alter database recover managed standby database disconnect from session;
8. Ativar o processo de "recover" no banco de dados Standby.
SQL> alter database recover managed standby database disconnect from session;
Database altered.
Removendo "redo logs" no banco de dados Standby
1. Cancelar o processo de "recover".
SQL> alter database recover managed standby database cancel;
1. Cancelar o processo de "recover".
SQL> alter database recover managed standby database cancel;
Database altered.
2. Verificar o parâmetro "standby_file_management" e configurá-lo para MANUAL.
SQL> show parameter standby_file
NAME TYPE VALUE
------------------------------------ ----------- ------
standby_file_management string AUTO
SQL> alter system set standby_file_management=manual
scope=both;
System altered.
SQL> show parameter standby_file
NAME TYPE VALUE
------------------------------------ ----------- ------
standby_file_management string MANUAL
3. Verificar o "status" dos arquivos de "redo logs" antes de removê-lo.
SQL> select group#, status from v$log;
GROUP# STATUS
---------- ----------------
SQL> show parameter standby_file
NAME TYPE VALUE
------------------------------------ ----------- ------
standby_file_management string MANUAL
3. Verificar o "status" dos arquivos de "redo logs" antes de removê-lo.
SQL> select group#, status from v$log;
GROUP# STATUS
---------- ----------------
1 CLEARING
2 CLEARING
3 CLEARING
4 UNUSED
2 CLEARING
3 CLEARING
4 UNUSED
5 CLEARING_CURRENT
6 UNUSED
6 rows selected.
6 UNUSED
6 rows selected.
NOTA: Se os
"status" dos "redo logs" estiverem em "CLEARING",
"CURRENT_CLEARING" ou "ACTIVE" indica que os arquivos estão
sincronizados com o banco de dados primário. Caso os "status" estejam
diferentes desses, um erro poderá ocorrer, durante a execução do procedimento
de remoção.
SQL> alter database drop logfile group 1;
alter database drop logfile group 1
ERROR at line 1:
ORA-01156: recovery in progress may need access to files
3.1. Para sincronizar os "redo logs" deve-se executar os comandos abaixo.
SQL> alter database clear logfile group 1;
Database altered.
SQL> alter database clear logfile group 2;
SQL> alter database clear logfile group 2;
Database altered.
SQL> alter database clear logfile group 3;
SQL> alter database clear logfile group 3;
Database altered.
3.2. Verificar os "status" dos "redo logs" novamente.
3.2. Verificar os "status" dos "redo logs" novamente.
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 UNUSED
2 UNUSED
3 UNUSED
4 UNUSED
5 CLEARING_CURRENT
6 UNUSED
6 rows selected.
4. Depois de sincronizados, pode-se remover os "redo logs".
6 UNUSED
6 rows selected.
4. Depois de sincronizados, pode-se remover os "redo logs".
SQL> alter database drop logfile group 1;
Database altered.
SQL> alter database drop logfile group 2;
SQL> alter database drop logfile group 2;
Database altered.
SQL> alter database drop logfile group 3;
SQL> alter database drop logfile group 3;
Database altered.
5. Verificar os "status" dos "redologs".
SQL> select group#, members, status from v$log;
GROUP# MEMBERS STATUS
---------- ---------- ----------------
4 1 UNUSED
5 1 CLEARING_CURRENT
6 1 UNUSED
6. Verificar o parâmetro "standby_file_management" e alterá-lo para AUTO.
SQL> alter system set standby_file_management=auto scope=both;
5. Verificar os "status" dos "redologs".
SQL> select group#, members, status from v$log;
GROUP# MEMBERS STATUS
---------- ---------- ----------------
4 1 UNUSED
5 1 CLEARING_CURRENT
6 1 UNUSED
6. Verificar o parâmetro "standby_file_management" e alterá-lo para AUTO.
SQL> alter system set standby_file_management=auto scope=both;
System altered.
7. Ativar o processo de "recover".
SQL> alter database recover managed standby database disconnect from session;
SQL> alter database recover managed standby database disconnect from session;
Database altered.
Referências: Oracle®
Database Administrator´s Guide 11gR2 (11.2)
Oracle® Data Guard Concepts and
Administration 11gR2
(11.2)
MSc.
Rubens Oliveira
DBA Oracle Consultor