terça-feira, 23 de novembro de 2010

Como converter uma instância simples (Single Instance) para Oracle RAC?

Neste artigo veremos um passo-a-passo sobre um método manual para converter um instância Simples (single instance) para Oracle database RAC

Informações sobre a instância:

    ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1   
    ORACLE_SID=prod

Localização dos datafiles = /u03/oradata/prod — /u03 está em formato de arquivo OCFS.

Se seus arquivos estão em sistema de arquivo diferente e não compartilhado, você deve compia-los e renomeá-los quando for o caso.

Versão do banco de dados = 10g R2 (10.2.0.1.0)

Passos para conversão dem uma instância simples "single instance" para RAC

Passo 1) Instale o software clusterware em todos os nós que você usará o RAC

Para detalhes de como instalar o software clusterware, veja o link: http://www.viniciusdba.com.br/blog/?p=316 (sempre em português!). As nomenclaturas de diretórios e detalhes de instalação estarão diferentes, informarei sempre as que estou usando.

Basicamente você precisa configurar o endereço IP e outros arquivos do sistema operacional e variáveis de ambiente, antes de instalar o clusterware. Veja o que o blog apresenta uma solução completa.

Importante: A versão do software clusterware deve ser igual a do banco de dados, nunca misture as versões!!

Detalhes da instalação do software clusterware:

    Nome do Cluster : crs
    Diretório de instalação do Cluster : /u01/app/oracle/product/10.2.0/crs
    Diretório do OCR  : /u03/oracrs/ocr.ora
    Diretório do Voting disk : /u03/oracrs/vote.crs

Passo 2) instale o banco de dados Oracle RAC em cluster 10g

Novamente siga as dicas excelentes deste blog: http://www.viniciusdba.com.br/blog/?p=396

Lembrando agora outro fato importante, a versão deste ambiente em RAC deve ser obrigatoriamente a mesma que você estava usando quando tinha uma só instância.

Detalhes da instalação:

    RAC ORACLE_HOME=/u01/app/oracle/product/10.2.0/db
    Número de instâncias = 2
    Nome dos nós para as 2 instãncias = ocvmrh2103, ocvmrh2190

/u01 não está sendo compartilhado entre os nós do cluster.

Passo 3) Faça um backup da sua instância e recupere este backup na partição que está sendo compartilhada (BACKUP/RESTORE).

    Se você estiver usando usando ASM, esta é a forma mais rápida:
        a) Monte os discos usando o caminho do diretório dos datafiles: 
        mkdir /mnt/datafile
        mount /hostdobancooriginal/diretorio/datafile /mnt/datafile -o user=usuario
        >>>informe a senha

        b) Faça o backup (cópia) do seu banco direto para os discos ASM usando o rman
        rman target system/system123@sid
        convert datafile '/mnt/datafile/system01.dbf' format '+disk/datafile/system01.dbf' ;

Passo 4) Faça uma cópia do seu init.ora e adicione os parâmetros para o RAC:

    bash-3.00$ cp initprod.ora /tmp/initprod.ora

    Parâmetros novos no arquivo /tmp/initprod.ora, perceba que as instância agora são numeradas 1 e 2, ok?

    *.cluster_database = TRUE
    *.cluster_database_instances = 2
    *.undo_management=AUTO
    prod1.undo_tablespace=UNDOTBS1
    prod1.instance_name=prod1
    prod1.instance_number=1
    prod1.thread=1
    prod1.local_listener=listener_ocvmrh2103
    prod2.instance_name=prod2
    prod2.instance_number=2
    prod2.local_listener=listener_ocvmrh2190
    prod2.thread=2
    prod2.undo_tablespace=UNDOTBS2

Passo 5) Altere a informação sobre a nova localização do arquivo de controle (controlfile), no arquivo  /tmp/initprod.ora

Passo 6) Cria seu SPFILE
    SQL> create spfile='/u03/oradata/prod/spfileprod.ora' from pfile='/tmp/initprod.ora';

Passo 7) Copie o spfile criado para o diretório : ORACLE_HOME/dbs e crie um novo pfile a partir dele.

    bash-3.00$ cp spfileprod.ora /u01/app/oracle/product/10.2.0/db/dbs/spfileprod.ora
    bash-3.00$ pwd
        /u01/app/oracle/product/10.2.0/db/dbs
    bash-3.00$ cat initprod1.ora
        spfile='/u01/app/oracle/product/10.2.0/db/dbs/spfileprod.ora'

Passo 8) Cria um novo arquivo de senha (password) para a instância prod1 embaixo do Oracle_home do RAC

    bash-3.00$ orapwd file=orapwprod1 password=welcome1

Passo 9) inicialize o banco de dados no modo "MOUNT" e troque os nomes dos datafile e redo log para sua nova localização.

----->>>>Antes confirme se sua varável de ambiente ORACLE_HOME está configurada corretamente:

    bash-3.00$ echo $ORACLE_HOME
    /u01/app/oracle/product/10.2.0/db   
    bash-3.00$ echo $ORACLE_SID
    prod1
   
    SQL> startup mount pfile=initprod1.ora
    ORACLE instance started.

    Total System Global Area  838860800 bytes
    Fixed Size                  1222168 bytes
    Variable Size             213912040 bytes
    Database Buffers          620756992 bytes
    Redo Buffers                2969600 bytes
    Database mounted.

Passo 10) Adicione a sugunda partição do RAC (thread) que irá atender a instância 2

    SQL> alter database add logfile thread 2 group 4 ('/u03/oradata/prod/redo2_01.dbf') size 50M, group 5 ('/u03/oradata/prod/redo2_02.dbf') size 50M, group 6     ('/u03/oradata/prod/redo2_03.dbf') size 50M;
    Database altered.

    SQL> ALTER DATABASE OPEN;
    Database altered.

    SQL> alter database enable public thread 2;
    Database altered.

Passo 11) Crie UNDO tablespace para a instância 2

O nome desta tablespace deve ser o mremos que você especificou no arquivo init.ora no passo 4.

    QL> CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE '/u03/oradata/prod/undotbs2_01.dbf' size 25M;
    ablespace created.

Passo 12) Crie as visões (views) específicas para cluster na instância 1

    QL> @?/rdbms/admin/catclust.sql

Passo 13) No segundo nó do cluster:

Configure o ORACLE_HOME e o SID

    bash-3.00$ export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db
    bash-3.00$ export ORACLE_SID=prod2

Crie o arquivo initprod2.ora igual ao initprod1.ora (da primeira instância). Lembre de copiar também o arquivo spfile para este segundo nó de cluster.

    bash-3.00$ pwd
    /u01/app/oracle/product/10.2.0/db/dbs
    bash-3.00$ ls -lrt spfileprod.ora
    -rw-r-----  1 oracle oinstall 3584 Feb 19 12:36 spfileprod.ora
    bash-3.00$ cat initprod2.ora
    spfile='/u01/app/oracle/product/10.2.0/db/dbs/spfileprod.ora'

Passo 14) Crie um novo arquivo de senhas (password) para esta instância

    bash-3.00$ orapwd file=orapwprod2 password=welcome1

Passo 15) Crie os diretórios (mkdir) para os arquivos, conforme informado no init.ora,  abaixo:
    audit_file_dest
    background_dump_dest
    user_dump_dest
    core_dump_dest


Passo 16) Inicialize a segunda instância

    SQL> startup pfile=initprod2.ora
    ORACLE instance started.

    Total System Global Area  838860800 bytes
    Fixed Size                  1222168 bytes
    Variable Size             213912040 bytes
    Database Buffers          620756992 bytes
    Redo Buffers                2969600 bytes
    Database mounted.
    Database opened.


Passo 17) Agora é só adicionar os serviços do cluster

    bash-3.00$ srvctl add database -d prod -o /u01/app/oracle/product/10.2.0/db -p /u03/oradata/prod/spfileprod.ora
    bash-3.00$ srvctl add instance -d prod -i prod1 -n OCVMRH2103
    bash-3.00$ srvctl add instance -d prod -i prod2 -n OCVMRH2190


Referência:
Metalink Note ID : 747457.1


Fique à vontade para tirar dúvidas comigo. Espero que você tenha Sucesso!


Luis Adelson.

Nenhum comentário:

Postar um comentário