sexta-feira, 4 de julho de 2014

Convertendo manualmente um banco de dados single para RAC

Converter um banco de dados Oracle single para RAC (Real Application Clusters) pode parecer para muitos uma tarefa complicada, cheia de mistérios… mas de fato, NÃO é!

A Oracle nos disponibiliza algumas ferramentas para esta conversão, dentre elas o próprio DBCA (Database Configuration Assistant) e o RCONFIG. Para saber mais sobre a conversão de single para RAC através destas ferramentas acesse Oracle® Real Application Clusters Installation Guide

Neste artigo estará sendo abordado uma conversão MANUAL de single para RAC (2 nodes), mas atente-se, o exemplo parte do ponto em que você já tenha o ambiente RAC montado (GI + ORACLE Database Software) e a base SINGLE que será convertida já migrada/clonada para o ambiente RAC.

Confirmando que nossa base é single.

[oracle@rac1 ~]$ sqlplus
 
SQL*Plus: Release 11.2.0.4.0 Production on Tue Mar 4 08:14:17 2014
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
Enter user-name: / as sysdba
 
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
 
SQL> select * from v$active_instances;
 
no rows selected
 
SQL> show parameter cluster;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cluster_database                     boolean     FALSE
cluster_database_instances           integer     1
cluster_interconnects                string

Primeiramente criamos os redo log online e a undo tablespace para o segundo nó dos cluster. Cada nó do cluster requer um conjunto individual de redo log e de segmentos de undo. 

Cada instance precisa de no mínimo 2 grupos de redo log online, preferencialmente multiplexados em discos diferentes com a finalidade de recuperação de falhas. 

Para cada instance é atribuído um número de thread, iniciando em 1, quando adicionamos mais arquivos de log é importante nos certificarmos que estamos atribuindo esta nova thread, de modo que os arquivos de log serão adicionados à instância correta.

--REDO THREAD 2
SQL> alter database add logfile thread 2 group 8 ('+REDOA/teste/redo08a.log','+REDOB/teste/redo08b.log') size 500m;
 
Database altered.
 
SQL> alter database add logfile thread 2 group 9 ('+REDOA/teste/redo09a.log','+REDOB/teste/redo09b.log') size 500m;
 
Database altered.
 
SQL> alter database add logfile thread 2 group 10 ('+REDOA/teste/redo10a.log','+REDOB/teste/redo10b.log') size 500m;
 
Database altered.
 
SQL> alter database add logfile thread 2 group 11 ('+REDOA/teste/redo11a.log','+REDOB/teste/redo11b.log') size 500m;
 
Database altered.
 
SQL> alter database enable public thread 2;
 
Database altered.
 
--UNDO TABLESPACE
SQL> create undo tablespace UNDOTBS2 datafile  '+DATA' size 500M;
 
Tablespace created.
Criado os redo logs e a undo para a segunda thread, execute o catclust.sql que ira criar as views de dicionário de dados do RAC. 

O catclust.sql está localizado dentro de $ORACLE_HOME/rdbms/admin ou simplesmente execute conforme abaixo.

SQL> @?/rdbms/admin/catclust
 
Package created.
 
Package body created.
 
PL/SQL procedure successfully completed.
 
View created.
 
Synonym created.
 
Grant succeeded.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
View created.
 
Grant succeeded.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
Synonym created.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
View created.
 
Grant succeeded.
 
Synonym created.
 
PL/SQL procedure successfully completed.
 
SQL>
Como nossa base ainda não possui nenhuma parametrização para o cluster, precisamos ajustar alguns parâmetros para dar continuidade na conversão da base single para RAC, desta forma criei um pfile para ajustar os parâmetros necessários.

SQL> create pfile from spfile;
 
File created.
teste1.undo_tablespace='UNDOTBS1'
teste2.undo_tablespace='UNDOTBS2'
teste1.instance_number=1
teste2.instance_number=2
teste1.thread=1
teste2.thread=2
*.remote_listener='oracle-scan:1521'
*.cluster_database_instances=2
*.cluster_database=TRUE
Observe que foi especificado o nome da instance frente a algum parâmetros. Isto significa que o parâmetro é único para aquela instance, quando especificado * significa que ele é valido para todas as instances do RAC. 

Foi atribuído a undo tablespace UNDOTBS2 criada acima para a instance teste2 e especificado a thread2 e instance_number para as bases conforme exemplo acima. 

O parâmetro CLUSTER_DATABASE_INSTANCES especifica a quantidade de instances que fazem parte do RAC, enquanto o CLUSTER_DATABASE habilita o database em modo cluster. 

O REMOTE_LISTENER é o “single name” do SCAN (11g +), necessário para balanceamento de carga (load balance) entre os RACs. Caso o ambiente seja 10g é necessário criar uma entrada no TNSNAMES.ora. 

Feito os ajustes no pfile irei subir a base utilizando este pfile modificado, criar um SPFILE dentro do ASM para que seja compartilhado entre as instances e apontar este SPFILE dentro do pfile local da instance em cada nó do RAC.

SQL> show parameter spf
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /u01/app/oracle/product/11.2.0
                                                 .4/dbhome_1/dbs/spfileteste.o
                                                 ra
 
SQL> shut immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
 
[oracle@rac1 ~]$ export ORACLE_SID=teste1
[oracle@rac1 ~]$ sqlplus / as sysdba
 
SQL*Plus: Release 11.2.0.4.0 Production on Tue Mar 4 09:35:11 2014
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
Connected to an idle instance.
 
SQL> startup pfile='initteste.ora'
ORACLE instance started.
 
Total System Global Area 1.6034E+10 bytes
Fixed Size                  2269072 bytes
Variable Size            4764729456 bytes
Database Buffers         1.0972E+10 bytes
Redo Buffers              294916096 bytes
Database mounted.
Database opened.
 
SQL> create spfile='+DATA/teste/spfileteste.ora' from pfile='initteste.ora';
 
File created.
[oracle@rac1 ~]$ echo "SPFILE='+DATA/teste/spfileteste.ora'" > $ORACLE_HOME/dbs/initteste1.ora
 
--NODE2
[oracle@rac2 ~]$ echo "SPFILE='+DATA/teste/spfileteste.ora'" > $ORACLE_HOME/dbs/initteste2.ora
--voltando NODE1
[oracle@rac1 ~]$ sqlplus
 
SQL*Plus: Release 11.2.0.4.0 Production on Tue Mar 4 09:43:55 2014
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
Enter user-name: / as sysdba
 
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
 
SQL> shut immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
Agora é preciso registrar o database e instances no CRS utilizando o utilitário SRVCTL. A partir do momento que o CRS gerencie o database/instances cadastradas com sucesso é possível reiniciar o servidor que as bases serão iniciadas na sequencia sem depender de uma intervenção manual para iniciá-las, claro, desde que não haja falhas.

[oracle@rac1 ~]$ srvctl add database -d teste -o $ORACLE_HOME
[oracle@rac1 ~]$ srvctl add instance -d teste -i teste1 -n rac1
[oracle@rac1 ~]$ srvctl add instance -d teste -i teste2 -n rac2
Subindo o database utilizando o SRVCTL podemos ver que nosso RAC já possui 2 instances ativas:

[oracle@rac1 ~]$ srvctl start database -d teste
[oracle@rac1 ~]$ sqlplus / as sysdba
 
SQL*Plus: Release 11.2.0.4.0 Production on Tue Mar 4 09:52:39 2014
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
 
SQL> select * from v$active_instances;
 
INST_NUMBER INST_NAME
----------- ------------------------------------------------------------
          1 rac1:teste1
          2 rac2:teste2
Dúvidas, necessidades ou compartilhamentos extra deixem um comentário. 

Referências: 
http://docs.oracle.com/cd/B28359_01/install.111/b28264/cvrt2rac.htm#RILIN1101 http://allthingsoracle.com/convert-single-instance-to-rac-part-2-manually-convert-to-rac/
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