domingo, 19 de fevereiro de 2012

Alterando Banco de dados RAC para modo archivelog

Anteriormente no artigo “Alterando banco de dados single para modo archivelog” verificamos a importância da base de dados estar configurada em modo archivelog e aprendemos como efetuar esta alteração em um database single. 

Nosso objetivo hoje é aprender como efetuar este ajuste em um ambiente clusterizado (RAC). Mãos a obra! 

Primeiramente vamos confirmar se a base de dados está em modo NOARCHIVELOG:

SQL> select distinct NAME, i.INSTANCE_NAME, OPEN_MODE, LOG_MODE from gv$database, gv$instance i order by 2;
 
NAME      INSTANCE_NAME    OPEN_MODE  LOG_MODE
--------- ---------------- ---------- ------------
ORCL      orcl1            READ WRITE NOARCHIVELOG
ORCL      orcl2            READ WRITE NOARCHIVELOG
ou
SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            /u01/app/oracle/product/10.2.0/db_1/dbs/arch
Oldest online log sequence     16
Current log sequence           17

Confirmado que a base está em modo NOARCHIVELOG, vamos ajustar um destino para os archives (redolog arquivados) que serão gerados. 

Neste momento é importante ficarmos atentos se o destino existe em todos os nós do cluster, ou então, também podemos configurá-los diferentemente para cada instance. 

* Ajustando um destino único para todas as instances:

Sintaxe: alter system set log_archive_dest_1=’LOCATION=’ scope=spfile sid=’*’;

SQL> alter system set log_archive_dest_1='LOCATION=/oraarchive/orcl' scope=spfile sid='*';
 
System altered.

Desta forma ajustamos o destino 1 dos archives para o local “/oraarchive/orcl”, note que antes do caminho de destino devemos especificar “LOCATION”. O scope será como spfile e o SID=’*’ (todos), caso seja necessário ajustar destinos diferentes devemos especificar o nome da instance no SID, como abaixo:

SQL> alter system set log_archive_dest_1='LOCATION=/oraarchive/orcl' scope=spfile sid='orcl1';
 
System altered.

OBS: Caso a opção SID não seja especificada no comando alter system ela recebe por default ‘*’ 

Ajustado o(s) destino(s), vamos agora ajustar o formato que os archives serão gerados.

Sintaxe: alter system set log_archive_format=’_%t_%s_%r.arc’ scope=spfile;

SQL> alter system set log_archive_format='orcl_%t_%s_%r.arc' scope=spfile;
 
System altered.

ORACLE_SID = Nome da instance;
%t = Número da thread;
%s = Número de sequencia do log;
%r = Resetlog ID.

Nosso próximo passo é alterar o parâmetro cluster_database para FALSE, desta forma desabilitamos “temporariamente” o Real Application Cluster.

Sintaxe: alter system set cluster_database=false scope=spfile;

SQL> alter system set cluster_database=false scope=spfile;
 
System altered.

Agora podemos parar o database: Sintaxe: srvctl stop database -d

[oracle@rac1 ~] cd $ORA_CRS_HOME
[oracle@rac1 bin]$ ./srvctl stop database -d orcl

Verificando se as instances orcl1 e orcl2 foram paradas:

[oracle@rac1 bin]$ ./crs_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
ora.orcl.db    application    OFFLINE   OFFLINE
ora....l1.inst application    OFFLINE   OFFLINE
ora....l2.inst application    OFFLINE   OFFLINE
ora....SM1.asm application    ONLINE    ONLINE    rac1
ora....C1.lsnr application    ONLINE    ONLINE    rac1
ora.rac1.gsd   application    ONLINE    ONLINE    rac1
ora.rac1.ons   application    ONLINE    ONLINE    rac1
ora.rac1.vip   application    ONLINE    ONLINE    rac1
ora....SM2.asm application    ONLINE    ONLINE    rac2
ora....C2.lsnr application    ONLINE    ONLINE    rac2
ora.rac2.gsd   application    ONLINE    ONLINE    rac2
ora.rac2.ons   application    ONLINE    ONLINE    rac2
ora.rac2.vip   application    ONLINE    ONLINE    rac2

Vamos iniciar agora a instance orcl1 para podermos alterar o ‘DATABASE’, para modo ARCHIVELOG.

[oracle@rac1 bin]$ export ORACLE_SID=orcl1
[oracle@rac1 bin]$ sqlplus / as sysdba
 
SQL*Plus: Release 10.2.0.1.0 - Production on Mon Oct 10 16:08:40 2011
 
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
 
Connected to an idle instance.
 
SQL> startup mount;
ORACLE instance started.
 
Total System Global Area  243269632 bytes
Fixed Size                  1218748 bytes
Variable Size             109053764 bytes
Database Buffers          130023424 bytes
Redo Buffers                2973696 bytes
Database mounted.
 
SQL> alter database archivelog;
 
Database altered.

Vamos alterar novamente o parâmetro cluster_database agora para TRUE e parar a instance para podermos iniciá-la atraves do serviço:

SQL> alter system set cluster_database=true scope=spfile;
 
System altered.
 
SQL> shutdown immediate;
ORA-01109: database not open
 
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 10g Release 10.2.0.1.0 - Production
With the Real Application Clusters option

iniciando:

[oracle@rac1 bin]$ ./srvctl start database -d orcl
 
[oracle@rac1 bin]$ ./crs_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
ora.orcl.db    application    ONLINE    ONLINE    rac2
ora....l1.inst application    ONLINE    ONLINE    rac1
ora....l2.inst application    ONLINE    ONLINE    rac2
ora....SM1.asm application    ONLINE    ONLINE    rac1
ora....C1.lsnr application    ONLINE    ONLINE    rac1
ora.rac1.gsd   application    ONLINE    ONLINE    rac1
ora.rac1.ons   application    ONLINE    ONLINE    rac1
ora.rac1.vip   application    ONLINE    ONLINE    rac1
ora....SM2.asm application    ONLINE    ONLINE    rac2
ora....C2.lsnr application    ONLINE    ONLINE    rac2
ora.rac2.gsd   application    ONLINE    ONLINE    rac2
ora.rac2.ons   application    ONLINE    ONLINE    rac2
ora.rac2.vip   application    ONLINE    ONLINE    rac2

Vamos verificar se nosso database está em modo ARCHIVELOG:

SQL> select distinct NAME, i.INSTANCE_NAME, OPEN_MODE, LOG_MODE from gv$database, gv$instance i order by 2;
 
NAME      INSTANCE_NAME    OPEN_MODE  LOG_MODE
--------- ---------------- ---------- ------------
ORCL      orcl1            READ WRITE ARCHIVELOG
ORCL      orcl2            READ WRITE ARCHIVELOG

Para certificarmos que os archives estão sendo gerados com sucesso podemos forçar um switch e verificar se foram criados abaixo do(s) destino(s) especificado(s).

SQL> select instance_name from v$instance;
 
INSTANCE_NAME
----------------
orcl1
 
SQL> alter system switch logfile;
 
System altered.
 
SQL> exit
Disconnected from Oracle Database 10g Release 10.2.0.1.0 - Production
With the Real Application Clusters option

[oracle@rac1 bin]$ ll /oraarchive/orcl
total 29440
-rw-rw---- 1 oracle oinstall 30109696 Out 10 16:27 orcl_1_17_764169947.arc

node2:

SQL> select instance_name from v$instance;
 
INSTANCE_NAME
----------------
orcl2
 
SQL> alter system switch logfile;
 
System altered.
 
SQL> exit
Disconnected from Oracle Database 10g Release 10.2.0.1.0 - Production
With the Real Application Clusters option

[oracle@rac2 orcl]$ ll /oraarchive/orcl
total 7184
-rw-rw---- 1 oracle oinstall 27804160 Out 10 16:28 orcl_2_1_764169947.arc
Postagem mais recente Postagem mais antiga Página inicial

0 comentários:

Postar um comentário

Translate

# Suporte

# ACE Program

#Oracle

#Oracle
Disclaimer: The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.

#Blog reconhecido

#ARTICULISTA

Marcadores

Postagens populares