Browse By

Flex Asm : Datafiles no ACFS ou no DiskGroup / rdbms 11.2.0.4 ?

A intenção desse post é somente colocar uma informação interessante em meio a varias outras que podem ser encontradas na net/blogs/documentação Oracle.

Qual tipo de configuração escolher para criar um ambiente DR com o maior HA possível em meio a tantas opções dentro de uma determinada versão (em diante) sobre um mesmo ambiente/HW ? E se tivermos alguma restrição devido a versão que pretendemos utilizar ?

Para responder esse pergunta precisamos de algumas informações do tipo, qual a versão do Grid-Infrastructure e RDBMS que será usado ?

Acabamos de ter nossa ODA x4-2 (12.1.2.3.0) liberada para utilização, na qual possui a seguinte versão: (Vou tentar pular o máximo que puder sobre informações específicas da “ODA”, pois esse post se encaixa em qualquer ambiente com grid e rdbms, não é específico para a mesma… non-exa until now, full)

GRID:

[root@oda1s2 bin]# ./crsctl query crs activeversion
Oracle Clusterware active version on the cluster is [12.1.0.2.0]

DB:

[root@oda1s2 bin]# oakcli show dbhomes
Oracle Home Name      Oracle Home version                  Home Location
----------------      -------------------                  ------------
OraDb11204_home1      11.2.0.4.6(20299013)                /u01/app/oracle/product/11.2.0.4/dbhome_1
OraDb12102_home1      12.1.0.2.3(20299023,20299022)       /u01/app/oracle/product/12.1.0.2/dbhome_1

 

O ambiente primário (na qual esta fora do escopo do post) possui os bancos sobre ASM com seus arquivos(datafile/controlfile/redo/archive/passwd) dentro de diskgroups, nada de diferente até aí.

O objetivo é que nossa ODA seja o ambiente de DSR/DR utilizando DATAGUARD para sincronização e aí vem a questão.
Qual tipo de configuração utilizaremos para ter o maior nível de HA dentro da própria ODA, já que a mesma possui alguns níveis de redundância tanto de HW quanto de Software( S.O por exemplo, a ODA é composta por 2 compute nodes e cada um tem seu próprio S.O é claro, Grid-infrastructure, Database Software and so on..), para uma configuração Mix ? (Grid 12c e rdbms 11g).

Você me pergunta: “Mas tem tanto segredo assim ? Não é só restaurar os bancos, criar/ativar o Dataguard e pronto ?” ..  Eu te respondo o seguinte. “Sim e não” .. Sim para quem gosta do padrão, e segue “How-to”‘s sem saber o que metade dos comandos/configurações realmente significam e não, para pessoas que também seguem muitos “how-to”‘s autorais e não assim como eu, mas que gostam de testar e saber que estão seguindo a melhor opção e geralmente possuem uma noção do que no mínimo uns 90% dos comandos que estão sendo executados realmente significam…

Nem tudo é tão simples quanto parece ser, pelo menos para os profissionais que gostam de saber o que esta acontecendo no background/backstage..

Nessa versão em que a ODA foi configurada, temos o “Flex ASM” habilitado por padrão. Não confundam com o “Flex CLUSTER“, onde que para um Flex Cluster funcionar, depende de um Flex Asm estar configurado, mas o inverso não é verdadeiro, o Flex Asm funciona sem um Flex Cluster.

Não vou comentar sobre o “Flex Cluster” pois esta fora do escopo e o post ficaria muito extenso, mas você pode ler mais sobre ele aqui e aqui, mas tanto para o Flex Cluster e/ou Flex ASM ser habilitado, a versão do Grid deve ser >=12.

Flex ASM em poucas palavras: Imagine que seu ambiente possua um cluster de 6 nodes, na versão anterior <12, cada um desses nodes era composto por uma instância ASM e juntamente com algumas outras de banco de dados pode node. Se essa instância ASM de algum node falhasse, todas as outras instâncias de banco de dados do mesmo node também iriam falhar pq dependem totalmente da instância de ASM “local” do node. Já no Flex ASM, se essa mesma instância de ASM falhasse e a versão do banco de dados na qual as instâncias foram criadas também estivessem na versão >=12, então essas mesmas instâncias continuariam executando sem nenhum problema no mesmo node onde a instância de ASM falhou. Isso acontece pq a conexão das instâncias de bancos de dados são “redirecionadas” para outras instâncias de ASM ativas que compõem o cluster (diante alguns fatores de escolha, como a instância com menor load, conexões e etc…). Você pode configurar quantas instâncias de ASM quiser onde o default é uma cardinalidade de 3 instâncias ASM, mas isso pode ser configurado sem problemas ex: vc pode ter 3 instâncias de ASM sobre um cluster de 6 node do tipo “padrão” ou HUB em Flex cluster. Resumo “Uma instância ASM do tipo FLEX pode servir tanto os bancos de dados locais quanto os remotos/outros nodes”

O gerenciamento, configuração do Flex ASM detalhado também esta fora do escopo, mas você pode ler mais em MOS 1573137.1.

Agora que temos uma idéia do que é o Flex ASM e como e até onde funciona (grid >=12 e db >=12 ), vamos para o próximo passo.

Vamos analisar a configuração atual do nosso cluster/grid do ambiente de DR.

[root@oda1s2 bin]# pwd
/u01/app/12.1.0.2/grid/bin
[root@oda1s2 bin]# ./crsctl get cluster mode status
Cluster is running in "standard" mode
[root@oda1s2 bin]# ./srvctl config gns
PRKF-1110 : Neither GNS server nor GNS client is configured on this cluster

 

Acima podemos ver que estamos operando no modo padrão <12 na camada do cluster, mas vamos ver como esta o ASM.

 [root@oda1s1 bin]# ./srvctl status asm
ASM is running on oda1s1,oda1s2

 

 [root@oda1s1 bin]# ./srvctl status asm
ASM is running on oda1s1,oda1s2
[root@oda1s1 bin]# ./asmcmd showclustermode
ASM cluster : Flex mode enabled
[root@oda1s1 bin]# ./asmcmd showclusterstate
Normal

 

[root@oda1s1 bin]# ./srvctl config asm
ASM home: <CRS home>
Password file: +DATA/orapwASM
ASM listener: LISTENER
ASM instance count: ALL
Cluster ASM listener: ASMNET1LSNR_ASM,ASMNET2LSNR_ASM

 

Uma informação importante. Na configuração “Flex ASM” são criados listener’s para comunicação entre os ASM’s ativos do cluster. Leia mais sobre isso é bem interessante.

Caso seu ambiente não esteja no modo Flex Asm e possui os pré requisitos necessários, siga esse doc, é bem fácil…

O ASM esta em modo “Flex“. Legal, mas agora eu me pergunto. O que isso me ajuda se o software rdbms desse ambiente (DR/DSR) DEVE ser da versão 11.2 ? Lembram que meu ambiente de produção/primário é composto por db’s versão 11.2.0.4 ou seja,  meu ambiente DR com dataguard precisa seguir a mesma versão. Lembram que comentei também que essa funcionalidade de “failover” que o Flex Asm possui para outra instância ASM ativa de outro node só funciona para versão/rdbms >=12 ?

Fiquei me perguntando isso, pois eu gostaria muito de aproveitar esse recurso com o database 11g e aumentar o HA em mais um nível, e aproveitar melhor a utilização de recursos do HW do ambiente de DR pois ele não possui o mesmo poder de processamento do ambiente de produção. Imaginem que preciso fazer um failover para esse ambiente e que a aplicação criasse 4.000 sessões, ficando 2.000 em cada node, tendo um consumo de cerca de 65% de processamento em cada um(previsão de consumo do ambiente de DR ). Usando a configuração convencional <12c , se a instância ASM falhasse, todas as instâncias do mesmo node falhariam e o que ocorreria em um ambiente RAC com services/HA ? Todas as sessões desse node seriam redirecionadas para o outro node, e o que aconteceria com a carga total ? 65+65 = >100% de processamento. Se utilizasse o “Flex ASM” isso não ocorreria (nesse exemplo específico), pois a instância de banco continuaria executando no mesmo node onde a instância de ASM falhou, aproveitando os recursos desse node sem interferir no outro. Existem N situações.

Até esse momento eu estava planejando utilizar como armazenamento o meio convencional e que é utilizado no PRIMARY, que seria os datafiles/controlfiles/redos dentro de diskgroups (+DG), até que veio o insight juntamente com a leitura de alguns docs.

A arquitetura Flex ASM, cria uma instância chamada +APXn, mais conhecida como Oracle ASM proxy instance, na qual seu objetivo é realizar o gerenciamento de ACFS metadata, incluindo extent maps. Essa instância conecta na instância +ASM, do mesmo modo que o RDBMS que utiliza diskgroups para armazenar seus arquivos, ou seja, ela seria um “client” também a grosso modo falando, e como é ela quem gerencia o ACFS, as coisas começaram ficar mais claras….

O próximo passo seria criar o banco de dados com seus arquivos (datafile,controlfile,redo ) dentro do ACFS (já que a partir da versão do grid 12.1, o mesmo suporta a criação/gerenciamento desses arquivos para a versão do rdbms a partir de 11.2.0.4), na qual é gerenciado pelo Oracle ASM proxy instance (+APXn), que por sua vez se conecta como um “client” na instância de +ASM, não precisando a instância de banco de dados ter qualquer contato “direto” com o ASM, ou seja, daremos um “by pass” para tentar alcançar nosso objetivo, utilizar o recurso do Flex Asm em uma versão de banco não “suportada” diretamente com uma configuração em diskgroup’s.

Creio que você já deva ter imaginado o que fiz.. mas vamos continuar…

Para minha sorte e não perca de tempo, o deploy da ODA x4-2 (12.1.2.3.0) já vem com o Flex ASM habilitado e por default, quando se usa a ferramenta oakcli para criar um banco de dados ele já faz a criação dos arquivos dentro do ACFS. Lógicamente que o banco final que usarei para DR não será criado pelo oakcli (e sim pelo duplicate ), pois o oakcli ainda possui algumas limitações quando preciso escolher options entre algumas outras configurações mais detalhadas (mesmo utilizando um arquivo de parâmetros), mas para esse teste do FLEX ASM eu posso criar alguns bancos e iniciar os testes para homologar se o que precisamos funciona ou não . (Mais informações sobre o oakcli, leia aqui)

Para os testes, criarei os seguintes bancos:

Tool Banco Versão DB TIPO Armazenamento
oakcli wmont 11.2.0.4 RAC ACFS
oakcli wmonz 12.1.0.2 RAC ACFS
dbca DBDG 11.2.0.4 RAC +DG
dbca DBDG12 12.1.0.2 RAC +DG

Para criar os arquivos de banco de dados dentro de diskgroup’s (+DG’s) precisei utilizar o dbca pois o oakcli dessa versão não permite (pelo menos até o momento) a criação sobre diskgroup’s, somente em ACFS por padrão.

Segue comandos utilizados para a criação dos bancos para documentação. São bem simples.

oakcli create database -db wmonz -oh OraDb12102_home1 -params dbconfigwmon -- Para criar banco no rdbms 12
oakcli create database -db wmont -oh OraDb11204_home1 -params dbconfigwmon11 -- Para criar banco no rdbms 11

DBCA +DG's 11g:
 dbca -silent \
 -createDatabase \
 -templateName New_Database.dbt \
 -gdbName DBDG \
 -sid DBDG \
 -SysPassword orcl \
 -SystemPassword orcl \
 -emConfiguration NONE \
 -redoLogFileSize 500 \
 -recoveryAreaDestination FRA \
 -storageType ASM \
 -asmSysPassword orcl12 \
 -diskGroupName DATA \
 -characterSet AL32UTF8 \
 -nationalCharacterSet AL16UTF16 \
 -totalMemory 2400 \
 -databaseType MULTIPURPOSE \
 -nodelist oda1s1,oda1s2

 

DBCA +DG's 12c:
 dbca -silent \
 -createDatabase \
 -templateName New_Database.dbt \
 -gdbName DB12DG \
 -sid DB12DG \
 -SysPassword orcl \
 -SystemPassword orcl \
 -emConfiguration NONE \
 -redoLogFileSize 500 \
 -recoveryAreaDestination FRA \
 -storageType ASM \
 -asmSysPassword orcl12 \
 -diskGroupName DATA \
 -characterSet AL32UTF8 \
 -nationalCharacterSet AL16UTF16 \
 -totalMemory 2400 \
 -databaseType MULTIPURPOSE \
 -nodelist oda1s1,oda1s2

 

Utilizarei a mesma query para todas as instâncias. Lembrando, será realizado uma conexão local em cada uma delas pois queremos testar o comportamento da instância local e não o failover de sessão.

Query:

set lines 1000
col INSTANCE_NAME for a15
COL SOFTWARE_VERSION FOR A18
COL COMPATIBLE_VERSION FOR A18
COL HOST_NAME FOR A15
select B.HOST_NAME, b.instance_name inst_local , a.* from v$asm_client a, v$instance b;

 

Sessão1: Conectado diretamente na instância +ASM1, node1:

Abaixo vemos sessões dos “clients” , instância +APX1(proxy instance) local e dos 2 bancos criados utilizando diskgroup’s para armazenar os datafiles. Vejam que não aparecem as instâncias ( de ambas versões 11g/12c) criadas com os arquivos dentro do ACFS,  (a +APX1 que é “quem” gerencia o ACFS). Veja que o ASM esta “servindo” atualmente as instâncias locais.

FLEX ASMSessão2: Conectado diretamente na instância +ASM2, node2:

Mesmas considerações acima, “servindo” atualmente as instâncias locais do node2.

FLEX ASMSessão3: Conectado diretamente na instância +APX1, node1:

Vejam que no node1 temos somente sessões da +ASM1 conectadas a instância +APX1, pois a +APX1 possui arquivos abertos na instância +ASM1.

Sessão4: Conectado diretamente na instância +APX2, node2:

Vejam que no node2 temos somente sessões da +ASM2 conectadas a instância +APX2., mesmo caso acima.

Sessão5: Conectado diretamente na instância WMONT1  no node1. ( RDBMS versão11g)

Vejam que essa instância não tem “conexão” para o ASM pois esta em ACFS, como se fosse um “FS” normal.

Sessão6: Conectado diretamente na instância WMONZ1  no node1. ( RDBMS versão12c)

Mesmo caso acima, não faz conexão ao ASM pois seus arquivos estão em ACFS.

Sessão7: Conectado diretamente na instância DBDG1  no node1. ( RDBMS versão11g)

Como utilizo diskgroup para armazenar os arquivos, existe uma conexão ao ASM.

Sessão8: Conectado diretamente na instância DB12DG1  no node1. ( RDBMS versão12c)

Como utilizo diskgroup para armazenar os arquivos, existe uma conexão ao ASM.

 

Agora que mostrei a imagem do “antes“, vamos desligar a instância +ASM1 abruptamente, para forçamos o failover dos “client” (bancos e APX) para outra instância ASM ativa em outro node do cluster.

Para isso vamos executar no node1:

[root@oda1s1 bin]# ./srvctl stop asm -node oda1s1 -stopoption abort -force

 

Após, vamos analisar os processos no S.O :

FLEX ASMQual instância esta faltando além da +ASM1 que acabou de ser derrubada ?

Somente uma, justamente a que não funcionaria conforme a documentação informa, devido a versão de banco <12 (11.2.0.4) e utilizando diskgroup, mas o restante continua no ar, inclusive a versão rdbms 11g que esta utilizando o ACFS.

Resumo:

Tool Banco Versão DB TIPO Armazenamento Status
oakcli wmont 11.2.0.4 RAC ACFS OK
oakcli wmonz 12.1.0.2 RAC ACFS OK
dbca DBDG 11.2.0.4 RAC +DG Fail
dbca DBDG12 12.1.0.2 RAC +DG OK

Como o banco em específico do post (11.2.0.4) utilizando o ACFS , tem seus arquivos gerenciados pela instância proxy +APXn e não pela instância ASM, ele se manteve online com sucesso no mesmo node, na qual a instância +APX1  teve sua conexão redirecionada para a instância +ASM2 do node 2. As outras instâncias 12c já funcionariam de qualquer forma tanto pelo modo “padrão” com diskgroups, quanto pelo ACFS pois é suportado.

Vejam o resultado pós/DEPOIS:

Sessão1: Sessão conectado diretamente na +ASM1: Na qual foi desligada anormalmente:

Screen Shot 2015-08-07 at 18.41.55Sessão2: Conectado diretamente na instância +ASM2, node2:

Vejam que aumentou a quantidade de conexões, agora temos conexões da +APX1 (do node1, na qual gerencia o ACFS sendo utilizado pelo banco versão 12 e 11 do node1) e uma conexão da instância 12c utilizando diskgroup que esta sendo executada no node1.

Screen Shot 2015-08-07 at 18.43.54Sessão3: Conectado diretamente na instância +APX1 do node1.:

Agora sendo direcionada para a +ASM2 do node2.

Screen Shot 2015-08-07 at 18.48.42Sessão4: Conectado diretamente na instância +APX2  no node2

Não mudou nada pois não houve  nenhum problema nela.

Screen Shot 2015-08-07 at 18.50.43Sessão5: Conectado diretamente na instância WMONT1  no node1. (Versão rdbms 11g)

Continua com sua sessão funcionando sem problemas, mesmo sendo versão 11g , só que utilizando o ACFS como armazenamento.

Screen Shot 2015-08-07 at 18.51.48

Sessão6: Conectado diretamente na instância WMONZ1  no node1. Se manteve do mesmo jeito.

Sessão7: Conectado diretamente na instância DBDG1  no node1.

Essa sessão utilizava o banco 11g com diskgroup para armazenar os arquivos.

Screen Shot 2015-08-07 at 18.55.16Vejam que conforme esperado, a instância também falhou após desligarmos a instância +ASM1. Processo totalmente esperado pois não é suportado.

Sessão8: Conectado diretamente na instância DB12DG1  no node1. (Versão rdbms 12c )

Sessão na instância 12c com diskgroup.

Vejam a coluna  INSTANCE_NAME na qual mostra que houve um failover para o ASM do outro node, mantendo a instância local. Processo esperado e suportado (rdbms 12c) diferente do acima (rdbms 11g) em DG.

Com isso vemos que é possível agora usufruirmos do Flex ASM para um maior HA mesmo com rdbms 11.2.0.4, mas usando ACFS ao invés de DG’s. Para quem já utiliza rdbms 12c, pode continuar utilizando tanto DG’s ou mesmo usar ACFS para armazenamento dos arquivos de bancos para usufruir das opções de rapid cloning, snapshot e etc que o ACFS provê para clonar bases para ambiente dev/hml de uma maneira rápida e otimizando o espaço em disco (possui algumas restrições).

Esse ambiente esta sobre uma ODA, na qual já adiantou 50% do caminho pois a criação do primeiro banco via oakcli já cria os volumes de database no ACFS (leia aqui), mas funciona perfeitamente em outros pois é o Grid-Infra que gerencia todo o processo.

Caso queira configurar asm proxy, ACFS e etc, existe um DOC ID que mostra passo a passo, sobre como cria-los e utiliza-los (aqui)

Abaixo vou colocar um outro teste sobre o que acontece quando a instância ASM proxy é forçada a “desligar” ao invés da ASM1, mas sabemos o que vai acontecer, certo ?

Iniciando a +ASM1:

[root@oda1s1 bin]# ./srvctl start asm -n oda1s1

Screen Shot 2015-08-09 at 0.16.10Iniciando instância DBDG1, (rdbms 11g usando diksgroups):

[root@oda1s1 bin]# ./srvctl start instance -db DBDG -i DBDG1

Screen Shot 2015-08-09 at 0.17.30Vamos voltar a conexão da instância +APX1 para o node1 (lembra que ela foi redirecionada para o +ASM2, node2 )?

Checando Antes:

NODE2, +ASM2:

Screen Shot 2015-08-09 at 0.22.01NODE1, +ASM1:

Screen Shot 2015-08-09 at 0.22.45Conectando na instância +ASM2 para executar o “relocate” da conexão da +APX1 de volta para a +ASM1:

ALTER SYSTEM RELOCATE CLIENT ‘<instance_name>:<db_name>’;

ALTER SYSTEM RELOCATE CLIENT ‘+APX1:+APX’ ;

Screen Shot 2015-08-09 at 0.25.01Checando a +ASM1:

Screen Shot 2015-08-09 at 0.26.37Vejam que as sessões da +APX1 voltaram para o node1. Você pode executar esse comando para relocar qual precisar. Vou aproveitar e voltar a conexão da DB12DG1 (rdbms 12c com diskgroups) para seu node original. Node1.

ALTER SYSTEM RELOCATE CLIENT 'DB12DG1:DB12DG' ;

 

O comando acima deve ser executado como sysasm.

Agora que tudo esta em seu local original, vamos derrubar a instância +APX1. O que você acha que vai acontecer ? será executado o failover das conexões do ACFS para o node2, +APX2 , mantendo os bancos do node1 no ar ?

Antes:

Screen Shot 2015-08-09 at 0.35.19./srvctl stop asm -proxy -node oda1s1 -stopoption ABORT -force

 

Depois:

Screen Shot 2015-08-09 at 0.36.00

Vejam que todas as instâncias que utilizavam o ACFS para armazenar seus datafiles foram desligadas anormalmente. Percebam também que os mount point’s do ACFS  foram “desligados” já que quem gerencia é a instância +APXn, mas como ela foi interrompida, tudo se foi.  Já os bancos que utilizam somente a instância +ASM1, por que utilizam diskgroups (e não ACFS) continuam executando sem problemas.

No node2 tudo continua do mesmo jeito e nada foi “migrado” para lá.

Opinião pessoal: Acredito que seria um pouco mais “fácil” (por mais que difícil seja) que uma instância de ASM dê algum problema do que em uma instância APX, pq a instância ASM possui mais “recursos/confs” para ser administrada dentro e fora da própria instância, desde arquivos de configuração (spfile), Grid-infrastructure tem que estar OK e etc, onde já uma instância APX, em sua maior abrangência necessita de memória disponível (como qualquer outro tipo de instância), uma conexão a uma instância ASM de qualquer node do cluster e que o Grid-infrastructure esteja OK também (que é quem gerencia o ASMLISTENER e etc). Sem falar de corrompimento de metadata e etc que afetaria as 2.  Vejam abaixo uma análise simples no alertlog da ASM e da APX, limitando a amostra até o startup do primeiro processo de background.

Startup ASM:

LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Initial number of CPU is 4
Number of processor cores in the system is 8
Number of processor sockets in the system is 2
Private Interface 'eth0:1' configured from GPnP for use as a private interconnect.
  [name='eth0:1', type=1, ip=169.254.103.9, mac=90-e2-ba-7c-02-30, net=169.254.0.0/17, mask=255.255.128.0, use=haip:cluster_interconnect/62]
Private Interface 'eth1:1' configured from GPnP for use as a private interconnect.
  [name='eth1:1', type=1, ip=169.254.151.14, mac=90-e2-ba-7c-02-31, net=169.254.128.0/17, mask=255.255.128.0, use=haip:cluster_interconnect/62]
Public Interface 'bond0' configured from GPnP for use as a public interface.
  [name='bond0', type=1, ip=10.100.29.4, mac=00-10-e0-63-0d-24, net=10.100.29.0/24, mask=255.255.255.0, use=public/1]
Public Interface 'bond0:1' configured from GPnP for use as a public interface.
  [name='bond0:1', type=1, ip=10.100.29.6, mac=00-10-e0-63-0d-24, net=10.100.29.0/24, mask=255.255.255.0, use=public/1]
Public Interface 'bond0:4' configured from GPnP for use as a public interface.
  [name='bond0:4', type=1, ip=10.100.29.8, mac=00-10-e0-63-0d-24, net=10.100.29.0/24, mask=255.255.255.0, use=public/1]
Picked latch-free SCN scheme 3
Using LOG_ARCHIVE_DEST_1 parameter default value as /u01/app/12.1.0.2/grid/dbs/arch
Autotune of undo retention is turned on.
LICENSE_MAX_USERS = 0
SYS auditing is enabled
NOTE: remote asm mode is remote (mode 0x202; from cluster type)
ASM appliance configuration detected
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options.
ORACLE_HOME = /u01/app/12.1.0.2/grid
System name:    Linux
Node name:      oda1s1
Release:        2.6.39-400.245.1.el5uek
Version:        #1 SMP Wed Dec 17 22:13:06 PST 2014
Machine:        x86_64
Using parameter settings in server-side spfile +DATA/oda1s-c/ASMPARAMETERFILE/registry.253.886870711
System parameters with non-default values:
  processes                = 600
  large_pool_size          = 12M
  instance_type            = "asm"
  _disk_sector_size_override= TRUE
  _disable_interface_checking= TRUE
  memory_target            = 1G
  remote_login_passwordfile= "EXCLUSIVE"
  audit_syslog_level       = "LOCAL0.INFO"
  asm_diskstring           = "/dev/mapper/*D_*p*"
  asm_diskgroups           = "REDO"
  asm_diskgroups           = "RECO"
  asm_power_limit          = 1
  _asm_hbeatiowait         = 100
  diagnostic_dest          = "/u01/app/grid"
NOTE: remote asm mode is remote (mode 0x202; from cluster type)
Sat Aug 08 22:57:34 2015
Cluster communication is configured to use the following interface(s) for this instance
  169.254.103.9
  169.254.151.14
cluster interconnect IPC version: Oracle UDP/IP (generic)
IPC Vendor 1 proto 2
Oracle instance running with ODM: Oracle Direct NFS ODM Library Version 3.0
NOTE: PatchLevel of this instance 3467666221
Starting background process PMON

 

Startup instância APX:

LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Initial number of CPU is 2
Number of processor cores in the system is 8
Number of processor sockets in the system is 2
Picked latch-free SCN scheme 3
Using LOG_ARCHIVE_DEST_1 parameter default value as /u01/app/12.1.0.2/grid/dbs/arch
Autotune of undo retention is turned on.
IMODE=BR
ILAT =0
LICENSE_MAX_USERS = 0
SYS auditing is enabled
NOTE: remote asm mode is remote (mode 0x102; from cluster type)
NOTE: Volume support  enabled
ASM appliance configuration detected
NOTE: remote asm mode is remote (mode 0x102; from cluster type)
Sun Aug 09 00:43:05 2015
NOTE: Proxy client name:+APX1:+APX:oda1s-c
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Automatic Storage Management and ASM Proxy Instance options.
ORACLE_HOME = /u01/app/12.1.0.2/grid
System name:    Linux
Node name:      oda1s1
Release:        2.6.39-400.245.1.el5uek
Version:        #1 SMP Wed Dec 17 22:13:06 PST 2014
Machine:        x86_64
WARNING: using default parameter settings without any parameter file
Sun Aug 09 00:43:05 2015
Oracle instance running with ODM: Oracle Direct NFS ODM Library Version 3.0
NOTE: PatchLevel of this instance 3467666221
Starting background process PMON

 

Iniciando a instância +APX1:

[root@oda1s1 bin]# ./srvctl start asm -proxy -node oda1s1

O lado ruim de “derrubar” a instância APX (sem restart do cluster) é que você precisa iniciar todos os volumes e filesystem utilizados pelos bancos manualmente e após isso, reiniciar as instâncias que utilizam o ACFS.

[root@oda1s1 bin]# ./crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
               ONLINE  ONLINE       oda1s1                   STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.ASMNET2LSNR_ASM.lsnr
               ONLINE  ONLINE       oda1s1                   STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.DATA.DATASTORE.advm
               OFFLINE OFFLINE      oda1s1                   Volume device /dev/a
                                                             sm/datastore-275 is
                                                             offline,STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.DATA.dg
               ONLINE  ONLINE       oda1s1                   STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       oda1s1                   STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.RECO.ACFSVOL.advm
               OFFLINE OFFLINE      oda1s1                   Volume device /dev/a
                                                             sm/acfsvol-186 is of
                                                             fline,STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.RECO.DATAFSVOL.advm
               OFFLINE OFFLINE      oda1s1                   Volume device /dev/a
                                                             sm/datafsvol-186 is
                                                             offline,STABLE
               ONLINE  ONLINE       oda1s2                   Volume device /dev/a
                                                             sm/datafsvol-186 is
                                                             online,STABLE
ora.RECO.DATASTORE.advm
               OFFLINE OFFLINE      oda1s1                   Volume device /dev/a
                                                             sm/datastore-186 is
                                                             offline,STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.RECO.dg
               ONLINE  ONLINE       oda1s1                   STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.REDO.ACLDATSTORE.advm
               OFFLINE OFFLINE      oda1s1                   Volume device /dev/a
                                                             sm/acldatstore-342 i
                                                             s offline,STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.REDO.DATASTORE.advm
               OFFLINE OFFLINE      oda1s1                   Volume device /dev/a
                                                             sm/datastore-342 is
                                                             offline,STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.REDO.dg
               ONLINE  ONLINE       oda1s1                   STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.data.datastore.acfs
               OFFLINE OFFLINE      oda1s1                   admin unmounted /u02
                                                             /app/oracle/oradata/
                                                             datastore,STABLE
               ONLINE  ONLINE       oda1s2                   mounted on /u02/app/
                                                             oracle/oradata/datas
                                                             tore,STABLE
ora.net1.network
               ONLINE  ONLINE       oda1s1                   STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.ons
               ONLINE  ONLINE       oda1s1                   STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.proxy_advm
               ONLINE  ONLINE       oda1s1                   STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.reco.acfsvol.acfs
               OFFLINE OFFLINE      oda1s1                   admin unmounted /clo
                                                             udfs,STABLE
               ONLINE  ONLINE       oda1s2                   mounted on /cloudfs,
                                                             STABLE
ora.reco.datafsvol.acfs
               OFFLINE OFFLINE      oda1s1                   admin unmounted /oda
                                                             datafs,STABLE
               ONLINE  ONLINE       oda1s2                   mounted on /odadataf
                                                             s,STABLE
ora.reco.datastore.acfs
               OFFLINE OFFLINE      oda1s1                   admin unmounted /u01
                                                             /app/oracle/fast_rec
                                                             overy_area/datastore
                                                             ,STABLE
               ONLINE  ONLINE       oda1s2                   mounted on /u01/app/
                                                             oracle/fast_recovery
                                                             _area/datastore,STAB
                                                             LE
ora.redo.datastore.acfs
               OFFLINE OFFLINE      oda1s1                   admin unmounted /u01
                                                             /app/oracle/oradata/
                                                             datastore,STABLE
               ONLINE  ONLINE       oda1s2                   mounted on /u01/app/
                                                             oracle/oradata/datas
                                                             tore,STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       oda1s2                   STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       oda1s1                   STABLE
ora.MGMTLSNR
      1        ONLINE  ONLINE       oda1s1                   169.254.103.9,STABLE
ora.asm
      1        ONLINE  ONLINE       oda1s1                   Started,STABLE
      2        ONLINE  ONLINE       oda1s2                   Started,STABLE
ora.cvu
      1        ONLINE  ONLINE       oda1s1                   STABLE
ora.mgmtdb
      1        ONLINE  ONLINE       oda1s1                   Open,STABLE
ora.oc4j
      1        ONLINE  ONLINE       oda1s1                   STABLE
ora.oda1s1.vip
      1        ONLINE  ONLINE       oda1s1                   STABLE
ora.oda1s2.vip
      1        ONLINE  ONLINE       oda1s2                   STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       oda1s2                   STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       oda1s1                   STABLE
ora.wmont.db
      1        OFFLINE OFFLINE                               Instance Shutdown,ST
                                                             ABLE
      2        ONLINE  ONLINE       oda1s2                   Open,STABLE
ora.wmonz.db
      1        OFFLINE OFFLINE                               Instance Shutdown,ST
                                                             ABLE
      2        ONLINE  ONLINE       oda1s2                   Open,STABLE

 

Status dos VOLUMES

[root@oda1s1 bin]# ./srvctl status volume -node oda1s1
Volume DATASTORE of diskgroup DATA for device /dev/asm/datastore-275 is enabled
Volume Device DATASTORE of diskgroup DATA for device /dev/asm/datastore-275 is not running on node(s): oda1s1
Volume ACFSVOL of diskgroup RECO for device /dev/asm/acfsvol-186 is enabled
Volume Device ACFSVOL of diskgroup RECO for device /dev/asm/acfsvol-186 is not running on node(s): oda1s1
Volume DATAFSVOL of diskgroup RECO for device /dev/asm/datafsvol-186 is enabled
Volume Device DATAFSVOL of diskgroup RECO for device /dev/asm/datafsvol-186 is not running on node(s): oda1s1
Volume DATASTORE of diskgroup RECO for device /dev/asm/datastore-186 is enabled
Volume Device DATASTORE of diskgroup RECO for device /dev/asm/datastore-186 is not running on node(s): oda1s1
Volume ACLDATSTORE of diskgroup REDO for device /dev/asm/acldatstore-342 is enabled
Volume Device ACLDATSTORE of diskgroup REDO for device /dev/asm/acldatstore-342 is not running on node(s): oda1s1
Volume DATASTORE of diskgroup REDO for device /dev/asm/datastore-342 is enabled
Volume Device DATASTORE of diskgroup REDO for device /dev/asm/datastore-342 is not running on node(s): oda1s1

 

Iniciar os VOLUMES:

srvctl start volume -volume DATASTORE -diskgroup DATA -n oda1s1
srvctl start volume -volume ACFSVOL -diskgroup REDO -n oda1s1
srvctl start volume -volume DATAFSVOL -diskgroup RECO -n oda1s1
srvctl start volume -volume DATASTORE -diskgroup RECO -n oda1s1
srvctl start volume -volume ACLDATSTORE -diskgroup RECO -n oda1s1
srvctl start volume -volume DATASTORE -diskgroup REDO -n oda1s1

Iniciar os FILESYSTEM’s:

srvctl start filesystem -device /dev/asm/datastore-275 -n oda1s1
srvctl start filesystem -device /dev/asm/acfsvol-186 -n oda1s1
srvctl start filesystem -device /dev/asm/datafsvol-186 -n oda1s1
srvctl start filesystem -device /dev/asm/datastore-186 -n oda1s1
srvctl start filesystem -device /dev/asm/datastore-34242 -n oda1s1

Analisando com df:

[root@oda1s1 bin]# df -lh
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroupSys-LogVolRoot
                       30G  3.3G   25G  12% /
/dev/mapper/VolGroupSys-LogVolOpt
                       59G   28G   28G  51% /opt
/dev/mapper/VolGroupSys-LogVolU01
                       97G   23G   70G  25% /u01
/dev/md0              487M   60M  402M  13% /boot
tmpfs                 127G  1.2G  125G   1% /dev/shm
/dev/asm/datastore-275
                      3.4T   14G  3.4T   1% /u02/app/oracle/oradata/datastore
/dev/asm/acfsvol-186  500G  1.1G  499G   1% /cloudfs
/dev/asm/datafsvol-186
                      5.0G   87M  5.0G   2% /odadatafs
/dev/asm/datastore-186
                      309G  2.4G  307G   1% /u01/app/oracle/fast_recovery_area/datastore
/dev/asm/datastore-342
                       62G  8.3G   54G  14% /u01/app/oracle/oradata/datastore

 

Após tudo montado, iniciar as instâncias:

[root@oda1s1 bin]# ./srvctl start instance -db wmonz -i wmonz1
[root@oda1s1 bin]# ./srvctl start instance -db wmont -i wmont1

[root@oda1s1 bin]# ps -ef |grep pmon
grid       869     1  0 Aug04 ?        00:00:06 mdb_pmon_-MGMTDB
grid     18031     1  0 12:24 ?        00:00:00 asm_pmon_+ASM1
grid     27267     1  0 14:59 ?        00:00:00 apx_pmon_+APX1
oracle   94074     1  0 16:07 ?        00:00:00 ora_pmon_wmonz1
oracle   94074     1  0 16:08 ?        00:00:00 ora_pmon_wmont1
root     95783 52269  0 16:07 pts/4    00:00:00 grep pmon

 

Checagem final dos resources:

[root@oda1s1 bin]# ./crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
               ONLINE  ONLINE       oda1s1                   STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.ASMNET2LSNR_ASM.lsnr
               ONLINE  ONLINE       oda1s1                   STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.DATA.DATASTORE.advm
               ONLINE  ONLINE       oda1s1                   Volume device /dev/a
                                                             sm/datastore-275 is
                                                             online,STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.DATA.dg
               ONLINE  ONLINE       oda1s1                   STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       oda1s1                   STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.RECO.ACFSVOL.advm
               ONLINE  ONLINE       oda1s1                   Volume device /dev/a
                                                             sm/acfsvol-186 is on
                                                             line,STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.RECO.DATAFSVOL.advm
               ONLINE  ONLINE       oda1s1                   Volume device /dev/a
                                                             sm/datafsvol-186 is
                                                             online,STABLE
               ONLINE  ONLINE       oda1s2                   Volume device /dev/a
                                                             sm/datafsvol-186 is
                                                             online,STABLE
ora.RECO.DATASTORE.advm
               ONLINE  ONLINE       oda1s1                   Volume device /dev/a
                                                             sm/datastore-186 is
                                                             online,STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.RECO.dg
               ONLINE  ONLINE       oda1s1                   STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.REDO.ACLDATSTORE.advm
               ONLINE  ONLINE       oda1s1                   Volume device /dev/a
                                                             sm/acldatstore-342 i
                                                             s online,STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.REDO.DATASTORE.advm
               ONLINE  ONLINE       oda1s1                   Volume device /dev/a
                                                             sm/datastore-342 is
                                                             online,STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.REDO.dg
               ONLINE  ONLINE       oda1s1                   STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.data.datastore.acfs
               ONLINE  ONLINE       oda1s1                   mounted on /u02/app/
                                                             oracle/oradata/datas
                                                             tore,STABLE
               ONLINE  ONLINE       oda1s2                   mounted on /u02/app/
                                                             oracle/oradata/datas
                                                             tore,STABLE
ora.net1.network
               ONLINE  ONLINE       oda1s1                   STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.ons
               ONLINE  ONLINE       oda1s1                   STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.proxy_advm
               ONLINE  ONLINE       oda1s1                   STABLE
               ONLINE  ONLINE       oda1s2                   STABLE
ora.reco.acfsvol.acfs
               ONLINE  ONLINE       oda1s1                   mounted on /cloudfs,
                                                             STABLE
               ONLINE  ONLINE       oda1s2                   mounted on /cloudfs,
                                                             STABLE
ora.reco.datafsvol.acfs
               ONLINE  ONLINE       oda1s1                   mounted on /odadataf
                                                             s,STABLE
               ONLINE  ONLINE       oda1s2                   mounted on /odadataf
                                                             s,STABLE
ora.reco.datastore.acfs
               ONLINE  ONLINE       oda1s1                   mounted on /u01/app/
                                                             oracle/fast_recovery
                                                             _area/datastore,STAB
                                                             LE
               ONLINE  ONLINE       oda1s2                   mounted on /u01/app/
                                                             oracle/fast_recovery
                                                             _area/datastore,STAB
                                                             LE
ora.redo.datastore.acfs
               ONLINE  ONLINE       oda1s1                   mounted on /u01/app/
                                                             oracle/oradata/datas
                                                             tore,STABLE
               ONLINE  ONLINE       oda1s2                   mounted on /u01/app/
                                                             oracle/oradata/datas
                                                             tore,STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       oda1s2                   STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       oda1s1                   STABLE
ora.MGMTLSNR
      1        ONLINE  ONLINE       oda1s1                   169.254.103.9,STABLE
ora.asm
      1        ONLINE  ONLINE       oda1s1                   Started,STABLE
      2        ONLINE  ONLINE       oda1s2                   Started,STABLE
ora.cvu
      1        ONLINE  ONLINE       oda1s1                   STABLE
ora.mgmtdb
      1        ONLINE  ONLINE       oda1s1                   Open,STABLE
ora.oc4j
      1        ONLINE  ONLINE       oda1s1                   STABLE
ora.oda1s1.vip
      1        ONLINE  ONLINE       oda1s1                   STABLE
ora.oda1s2.vip
      1        ONLINE  ONLINE       oda1s2                   STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       oda1s2                   STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       oda1s1                   STABLE
ora.wmont.db
      1        OFFLINE OFFLINE                               Instance Shutdown,ST
                                                             ABLE
      2        ONLINE  ONLINE       oda1s2                   Open,STABLE
ora.wmonz.db
      1        OFFLINE OFFLINE                               Instance Shutdown,ST
                                                             ABLE
      2        ONLINE  ONLINE       oda1s2                   Open,STABLE

 

A pergunta de sempre , qual deles é o melhor e mais rápido ?

O melhor se encaixa no que vc precisa. Se precisa de um ambiente na qual possa realizar snapshot’s para criação de bases de teste/homologação e economizar espaço em disco, acredito que o ACFS seja muito bom. A Oracle fala que se sua aplicação é muito sensível ao IO, que use diskgroup’s, mas acredito que a diferença hoje em dia esteja muito equilibrada.

Segue abaixo um teste básico(testes mais avançados não estão previstos para esse post, quem sabe um outro) de medição do IO desse ambiente.

DATAFILES NO ACFS:

Criação de TBS:

Screen Shot 2015-08-10 at 20.50.30

IO Calibrate:

Screen Shot 2015-08-11 at 0.09.01

DATAFILES NO DISKGROUP:

Criação de TBS:

Screen Shot 2015-08-10 at 18.48.12IO Calibrate:

Screen Shot 2015-08-11 at 0.09.08Ambas instâncias (ambas utilizando a mesma versão 11.2.0.4) estão com a mesma quantidade de memória e DBWR. Percebam que no ACFS (filesystemio_options setall ) foi um pouco mais rápido para criar a tablespace e uma quantidade um pouco maior em IOPS pelo calibrate, mas no diskgroup teve um maior valor em MB/s de leitura e menor latência(lembram do mais sensitivo a IO ?). Você pode ter diferentes valores (ex: ACFS com Asynch, +ou- 40secs, menos IOPS, Menor MB/s) em diferentes configurações, mas o que quero mostrar aqui é que o ACFS não esta tão longe de uma configuração comparada com diskgroup para armazenamento dos arquivos de banco, pois no final das contas os arquivos dentro do ACFS também ficam dentro de diskgroups e aproveitam todos os níveis/features de redundância, mas estão em uma “camada/nível a mais” de gerenciamento e ele(ACFS), pode ser utilizado em ambientes de produção (após poc/análise do seu ambiente/ teste de carga/ RAT )inclusive para beneficiar de suas features e/ou acomodar bancos 11.2.0.4 para aumentar o nível de HA com Flex ASM e satisfazer um quesito do Cloud computing.

Dica: Para quem usa rdbms 12c/Multitenant, leiam esse White Paper da Oracle que mostra como utilizar snapshot clones no ACFS  e ensina como instalar um “Software” free para gerenciamento desses snapshots e provisionar como um PDBaaS, chama-se:

Self-Service provisioning application for Pluggable Database as a Service (PDBaaS).

 

ATUALIZAÇÃO:

Ao que me parece utilizando o FLEX ASM, o mesmo força a respeitarmos o espaço necessário para reconstrução da redundância do diskgroup em caso de problemas, pelo menos no diskgroup REDO formado pelos SSD’s. Em uma instalação normal, podemos “não” respeitar o valor das colunas REQUIRED_MIRROR_FREE_MBUSABLE_FILE_MB mostradas na view v$asm_diskgroup e continuar utilizando mesmo que mostre valores negativos. (Não faça isso é claro :))

Vejam abaixo que ainda possuo espaço disponível no DG REDO: (FREE_MB), mas o usable file já esta negativo.

Screen Shot 2016-01-11 at 20.30.58

Se eu utilizasse meus datafiles/redos dentro do ASM em diskgroups, eu poderia continuar utilizando e aumentando o espaço (mesmo que não seja recomendado. Novamente, não faça isso…)

Já pelo Flex-Asm, quando executo o comando para aumentar o FS em mais 10GB (atualmente tenho 140GB FREE como evidenciado acima), ele aborta e mostra a mensagem de erro:

[root@oda1s1 ~]# oakcli resize dbstorage -redo 10

Screen Shot 2016-01-11 at 20.38.16

Eu testei somente para o DG REDO na qual foi criado em discos SSD, talvez isso seja um comportamento somente para esse caso específico, não testei ainda em DG’s normais e não encontrei ainda uma documentação informando isso. Assim que o fizer atualizo aqui.

Forte abraço

Leave a Reply

Your email address will not be published. Required fields are marked *