Oracle RAC 12c:"Flex ASM" e "Flex Cluster"

Por Deiby Gómez Robles, Yenugula Venkata RaviKumar (OCM) e David Siqueira  ,
Postado en março 2014

Introdução:

"Oracle Real Application Cluster (RAC)"  é um produto muito conhecido hoje em dia dentre as grandes suluções que a Oracle oferece para manter a Alta Disponibilidade dos dados de um negócio. Oracle RAC permite compartilhar a carga de trabalho entre todos os nodes que compõem o cluster, resultando em uma configuração de  N-1 para falhas nos nodes, onde N é o número total de nodes. Oracle RAC constantemente está adquirindo melhorias em cada uma de suas versões, e desta vez não foi diferente, na versão 12c incorporou duas características muito importantes chamadas  "Flex ASM" e "Flex Cluster" que dão suporte aos requisitos exigidos em ambientes do tipo  "Cloud Computing".

"Oracle Flex ASM" em relação as versões anteriores a aquitetura do ASM mudou na versão Oracle RAC . Antes da chagada do "Oracle Flex ASM" na base de dados Oracle versão 12c, uma instância ASM existia em cada um dos  nós do cluster, se uma instância de ASM falhava, então todas as demais bases de dados que executavam no mesmo nó também falhavam.

Agora no Banco de Dados versão 12c, se uma instância de ASM falha, o "Oracle Clusterware" inicia uma subistituição da instância de ASM em um nó diferente para manter a cardinalidade do ASM.

A cardinalidade por padrão para  ASM é de três, mas que pode ser alterado por meio de alguns comandos de  Clusterware.

Comparação entre "Oracle Flex Cluster" e "Oracle Flex ASM":

Antes da versão 12c a topulogia dos nós dentro de um  Oracle RAC obedecia as seguintes normas:

  • Cada nó dentro do cluster é conectado aos outros nós mediante uma rede privada.
  • Cada nó dentro do cluster é conectado diretamente ao armazenamento compartilhado (storage).

No Oracle RAC 12c foram introduzidos dois novos conceitos:

Nós Hub: Estes nós são conectados uns aos outros através de uma rede privada e acessam directamente o armazenamento compartilhado, tal como era nas versões anteriores. Estes nós são aqueles que acessam diretamente o Oracle Cluster Registry (OCR) e o Voting Disk (VD).

Nós Leaf: Estes nós são mais leves e não estão ligados uns aos outros e acessam diretamente o  compartilhamento como no caso do "Hub Nodes" de armazenamento. Cada "Fulha do Nó" se comunica com o "Nó Hub", que está ligado e conectado ao cluster igualmente através do seu "Hub Nó".

"Oracle Flex Cluster" é um cluster com nodes do tipo "Hub" e nodes do tipo "Leaf" (fulha). "Oracle Flex Cluster" requer "Oracle Flex ASM". Em uma configuração de "Oracle Flex Cluster", o "Oracle Flex ASM" pode ser executados nos nodes do tipo  "Hub" servindo os clientes através dele. As principais vantagens de se usar "Oracle Flex Cluster" são:

  • Reduzir a quantidade de acesso ao armazenamento dos nodes compartilhados do tipo “Hub” a contençao no OCR e no “Votting Disk” são reduzidas.
  • Redução do trafego de rede entre os nodes do cluster utilizados pelo "heartbeats".

Formas de Implantar o  "Oracle Flex ASM":

O "Oracle Flex ASM" pode ser implementao das seguintes maneiras:

  • Na versão 12c:
    • "Grid Infrastructure (GI)" e a base de dados ambos estão na versão 12c.
  • Utilizando versões mistas:
    • A instancia de ASM na versão 12c será executada em cada node dentro da configuração  Flex para servir as instancias de base de dados em uma versão anterior a  12c. a vantagem desta configuração é que se uma instancia de uma base de dados perde a conectividade com uma instancia ASM, então as conexões de banco de dados realizam “failover” com outra instancia ASM em um node diferente.

Comparação entre RAC 12c e versões anteriores:

O cenário utilizado para essa comparação foi o seguinte:

  • RAC 12c com os seguintes componentes:
    • Dois nodes: "rac1" e "rac2".
    • Duas instancias de base de dados: "orcl1" e "orcl2"
    • Duas instancias de  ASM: "+ASM1" e "+ASM2".
  • RAC 11g com os seguintes componentes:
    • Dois nodes: "rac1" e "rac2".
    • Duas instancias de base de dados: "flavia1" e "flavia2"
    • Duas instancias de ASM: "+ASM1" e "+ASM2".

RAC1: Como verificar se "Oracle Flex ASM" está habilitado ou não?

[oracle@oel6-112-rac1 Desktop]$ asmcmd
ASMCMD>showclustermode
ASM cluster :Flex mode enabled 
ASMCMD>showclusterstate
Normal

RAC1: Como trocar a cardinalidade do ASM?

[oracle@oel6-112-rac1 Desktop]$ srvctl status asm -detail
ASM is running on oel6-112-rac2,oel6-112-rac1
ASM is enabled.
[oracle@oel6-112-rac1 Desktop]$ srvctlconfigasm -detail
ASM home: /u01/app/12.1.0/grid
Password file: +DATA/orapwASM
ASM listener: LISTENER
ASM is enabled.
ASM instance count: 3
Cluster ASM listener: ASMNET1LSNR_ASM

RAC2: Como verificar se "Oracle Flex ASM" está habilitado ou não?

[oracle@oel6-112-rac2 Desktop]$ asmcmd
ASMCMD>showclustermode
ASM cluster : Flex mode enabled
ASMCMD>showclusterstate
Normal
ASMCMD>exit

RAC2: Como trocar a cardinalidade do  ASM?

[oracle@oel6-112-rac2 Desktop]$ srvctlconfigasm -detail
ASM home: /u01/app/12.1.0/grid
Password file: +DATA/orapwASM
ASM listener: LISTENER
ASM is enabled.
ASM instance count: 3
Cluster ASM listener: ASMNET1LSNR_ASM

Oracle RAC 12c:

Configuração Standard "Oracle Flex ASM":

Falha de uma instancia de ASM com uma configuração de  "Oracle Flex ASM"

  • Conecte-se no Node 1 (rac1):
  • [oracle@oel6-112-rac1 Desktop]$ hostname 
      oel6-112-rac1.localdomain
  • Verificar a existencia de instancias no node 1 (rac1): A instancia de base de dados "orcl1" está executando assim como a instancia de ASM "+ASM1".
  • [oracle@oel6-112-rac1 Desktop]$ ps -ef | greppmon
    oracle    3325     1  0 17:39 ?        00:00:00 asm_pmon_+ASM1
    oracle    5806     1  0 17:42 ?        00:00:00 ora_pmon_orcl1
  • Verificar o status das instancias de  ASM no node 1 (rac1):
  • [oracle@oel6-112-rac1 Desktop]$ srvctl status asm 
      ASM is running on oel6-112-rac2,oel6-112-rac1
  • Verificar o status do Cluster no node 1 (rac1):
  • [oracle@oel6-112-rac1 Desktop]$ crsctl check cluster
    CRS-4537: Cluster Ready Services is online
    CRS-4529: Cluster Synchronization Services is online
    CRS-4533: Event Manager is online
  • Parar a instancia de ASM no Node 1 (rac1): deve ser parada de maneira forçada para simular uma falha da mesma.
  • [oracle@oel6-112-rac1 Desktop]$ srvctl stop asm -node oel6-112-rac1 -stopoption abort -force
  • Verificar o status da instania ASM no Node 1 (rac1): A instancia de ASM no node 1 não esta executando.
  • [oracle@oel6-112-rac1 Desktop]$ srvctl status asm
    PRCR-1070 : Failed to check if resource ora.asm is registered
    Can not communicate with crsd
  • Verificar o status do Cluster no Node 1 (rac1):
  • [oracle@oel6-112-rac1 Desktop]$ crsctl check cluster
    CRS-4535: Cannot communicate with Cluster Ready Services
    CRS-4529: Cluster Synchronization Services is online
    CRS-4533: Event Manager is online
  • Verificar o status do ASM e da instancia de banco de dados no node 1 (rac1): A instancia de banco de dados "orcl1" ainda continua mesmo que não houver nenhuma instancia de  ASM no mesmo node.
  • [oracle@oel6-112-rac1 Desktop]$ ps -ef | greppmon
    oracle    5806     1  0 17:42 ?        00:00:00 ora_pmon_orcl1
  • Comprovação dos resultados (rac1): As instancia de banco de dados "orcl1" e "orcl2" estão executando sem se importar se a instancia de  ASM "+ASM1" não exista.
  • oracle@oel6-112-rac1 Desktop]$ sqlplus /nolog
    SQL*Plus: Release 12.1.0.1.0 Production on Wed Sep 25 18:24:36 2013
    Copyright (c) 1982, 2013, Oracle.  All rights reserved.
    
    SQL> connect sys/oracle@orcl as sysdba
    Connected.
    
    SQL> select instance_name,instance_number from gv$instance;
    
    INSTANCE_NAME    INSTANCE_NUMBER
    ------------------      -----------------------
    orcl2      2
    orcl1      1
    
    SQL> select instance_name,instance_number from v$instance;
    
    INSTANCE_NAME    INSTANCE_NUMBER
    ------------------      ----------------------
    orcl2      2
    
    SQL> connect sys/oracle@orcl as sysdba
    Connected.
    
    SQL> select instance_name,instance_number from gv$instance;
    
    INSTANCE_NAME    INSTANCE_NUMBER
    ------------------      ----------------------
    orcl1      1
  • Conectar-se a instancia de ASM do node 2 (rac2) através do node 1 (rac1): A instancia de  ASM do Node 2 (rac2) esta acessivel através do node 1.
  • [oracle@oel6-112-rac1 Desktop]$ . oraenv
    ORACLE_SID = [orcl1] ? +ASM2
    ORACLE_HOME = [/home/oracle] ? /u01/app/12.1.0/grid
    
    The Oracle base remains unchanged with value /u01/app/oracle
    
    oracle@oel6-112-rac1 Desktop]$ asmcmd --privilege sysasm --inst +ASM2
    
    ASMCMD>lsdg
    
    State    Type    Rebal  Sector  Block   AU        Total_MB  Free_MBReq_mir_free_
    MOUNTED  EXTERN  N      512     4096    1048576   15342     4782                
    
    MBUsable_file_MBOffline_disksVoting_files    Name
    0            4782              0             Y  DATA/
    
    ASMCMD>

Resumo: A instancia de banco de dados estava usando uma instancia de ASM dedicada , e essa instancia de ASM foi forçada a baixar simulando assim uma falha nela mesma, então a instancia de base de dados reconectou-se a uma instancia de ASM existente em outro node, como demonstrado no exemplo .. para o node 2 (rac2).

Oracle RAC 11.2 ou anterior:

  • Realizar "Login" no node 1 (rac1):
  • login as: oracle
    oracle@192.168.xx.xx's password:
    Lastlogin: FriSep 27 06:05:44 2013
  • Verificar se existem instancias no node 1 (rac1): A instancia de banco de dados "flavia1" está executando bem como a instancia de  ASM "+ASM1".
  • [oracle@rac1 ~]$ ps -ef | greppmon
    oracle    3053     1  0 05:56 ?        00:00:00 asm_pmon_+ASM1
    oracle    3849     1  0 05:57 ?        00:00:00 ora_pmon_flavia1
  • Verificar o status da instancia de ASM no node 1  (rac1): Existe uma instancia de ASM em cada um dos nodes do cluster.
  • [oracle@rac1 ~]$ srvctl status asm 
      ASM is running on rac2,rac1
  • Verificar o status do Cluster no Node 1 (rac1):
  • [oracle@rac1 ~]$ crsctl check cluster
    CRS-4537: Cluster Ready Services is online
    CRS-4529: Cluster Synchronization Services is online
    CRS-4533: Event Manager is online
  • Baixar a instancia de ASM no node 1 (rac1): baixar de maneira forçada para simular uma falha da mesma.
  • [oracle@rac1 ~]$ srvctl stop asm -n rac1 -o abort -f
  • Verificar o status da instancia de ASM no node 1 (rac1): só ha uma instancia de ASM executando no node 2 do cluster (rac2):
  • [oracle@rac1 ~]$ srvctl status asm  
    ASM is running on rac2
  • Verificar o status das instancias de ASM e banco de dados no node 1 (rac1): Veja que a falha na Instancia de ASM no node1, também gerou uma falha na base de dados.
  • [oracle@rac1 ~]$ ps -ef | grep pmon
    oracle    7885  5795  0 06:20 pts/0    00:00:00 grep pmon

    Resumo: A instancia de banco de dados esta fortemente interligada com a instancia de ASM. Se uma instancia de ASM falhar, também a instancia e banco de dados do mesmo node falhará.

    Características do Flex ASM:

    • O numero máximo de "Disk Groups" foi aumentado de  63 para 511.
    • Agora ha um comando para renomear  "ASM Disk" em um "Disk Group".
    • Verificação a nível de patch da  instancia de ASM
    • A verificação a nivel de patch e desabilitada durante a aplicaçao de um patch.
    • Metadados físico replicados.
    • "Oracle Flex ASM"suporta tamanhos de LUN muito maiores para bases de dados 12c.
    • Nenhum parametro especifico é requerido dedo do banco de dados para usar o "Oracle Flex ASM".
    • A instancia de ASM usa Automatic Memory Management (AMM).
    • A reconexão de uma instancia  de banco de dados para outra instancia ASM é automática.

    Novas características de rede agregadas no Flex ASM:

    • Nas versões anteriores o cluster requería :
      • Uma rede publica para acesso dos clientes.
      • Uma ou mais redes privadas para comunicação entre os nodes dentro do cluster incluindo trafego de ASM.
    • "Oracle Flex ASM" agrega uma rede dedicada para ASM, que pode ser usada para comunicação entre ASM e clientes para isular e reducir o trafego ASM.

    Implementação do  "Oracle Flex ASM":

    • Esculha a opção “Advanced Installation”

    Existem tres opções de armazenamento para os dados:

    • Standard ASM
      • Configuração usada para versões anteriores a 12c.
    • "Oracle Flex ASM"
      • Recommended
    • Non-ASM managed storage
      • Utilizada para um sistema de arquivos diferente de  ASM.

    Deiby Gomez é um  DBA com vasta experiencia em  Oracle Exadata Database Machine e suluções de Alta Dipsonibilidade. Deiby requentemente ministra palestras em importantes eventos Oracle na Guatemala tais como "Oracle Technulogy Network Tour", "Java Day", "Primer Simposio de Oracle" e em varias Universidades de seu país de residencia (Guatemala). Deiby é o primeiro Oracle ACE da Guatemala. É "Oracle RAC 11g and Grid Infraestructure Administrator", "ExadataDatabase Machine X3 Administrator", "Oracle Linux Certified ImplementationSpecialist" e  "Oracle SOA Implementation Certified Expert".

    Yenugula Venkata Ravikumar é um DBA com mais de 15 anos de experiencia com Oracle e em ambientes de alta disponibilidade (RAC, Data Guard, dentre outros), tuning e desempenho, migrações, backup e recover, Oracle Exadata X2 e X3, é Expert em sistemas operacionais tais como  como AIX, HP-UX e Linux. Já participou como conferencista de Oracle pela India, ode mora atualmente. Obteve o titulo de "Oracle Certified Master (OCM 10g)" em 2009.

    David Siqueira DBA desde 2001, atuante no mercado de São Paulo Brasil, trabalhou nas principais consultorias sempre buscando melhorar conhecimentos e agregar valor aos ambientes por onde passou, é OCP 10 e 11g, OCE SQL Expert, OCE RAC 10g, OCE Exadata Essentials e foi nomeado Oracle ACE em Dezembro de 2011. Atua com ambientes de Alta Disponibilidade Oracel RAC 11g, Exadata X2-2 e Administração de Banco de Dados em Geral. Também possui conhecimentos em sistemas operacionais Oracle VM server e Oracle Businnes Intelligence.