Iniciando o ACFS (ORA-15477)

Olá pessoal, estou trazendo aqui uma dica bem rápida de como iniciar o ACFS no caso de ele não estar habilitado.

Inicialmente vou alternar minha sessão para o usuário grid:

[root@exadb01 ~]# su - grid

Defino as variáveis de ambiente para apontar para o ASM:

[grid@exadb01 ~]$ . oraenv
ORACLE_SID = [grid] ? +ASM
The Oracle base has been set to /u01/app/grid

Acesso o asmcmd para listar os diskgroups presentes na minha configuração:

[grid@exadb01 ~]$ asmcmd
ASMCMD> lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  NORMAL  N         512   4096  4194304     17280    10392              720            4836              0             N  DATA/
MOUNTED  NORMAL  N         512   4096  2097152      1152      940               48             446              0             N  DBFS/
MOUNTED  NORMAL  N         512   4096  2097152      4224     2744              176            1284              0             N  RECO/

Tento criar um volume para usar no ACFS:

ASMCMD> volcreate -G DBFS -s 100M acfsvol01
ORA-15032: not all alterations performed
ORA-15477: cannot communicate with the volume driver (DBD ERROR: OCIStmtExecute)

O erro é reportado, pois o módulo do ACFS não está carregado.

Novamente como root, veja que o módulo não é nem listado:

[root@exadb01 ~]# lsmod |grep -i acfs

[root@exadb01 ~]# lsmod |grep -i oracle

Sendo assim preciso carregar o módulo do ACFS e do ADVM e para isso se suceder executo:

[root@exadb01 ~]# acfsload start
ACFS-9391: Checking for existing ADVM/ACFS installation.
ACFS-9392: Validating ADVM/ACFS installation files for operating system.
ACFS-9393: Verifying ASM Administrator setup.
ACFS-9308: Loading installed ADVM/ACFS drivers.
ACFS-9154: Loading 'oracleoks.ko' driver.
ACFS-9154: Loading 'oracleadvm.ko' driver.
ACFS-9154: Loading 'oracleacfs.ko' driver.
ACFS-9327: Verifying ADVM/ACFS devices.
ACFS-9156: Detecting control device '/dev/asm/.asm_ctl_spec'.
ACFS-9156: Detecting control device '/dev/ofsctl'.
ACFS-9322: completed

Agora sim consigo listar os módulos:

[root@exadb01 ~]# lsmod |grep acfs
oracleacfs           1933804  0
oracleoks             420760  2 oracleacfs,oracleadvm

[root@exadb01 ~]# lsmod |grep oracle
oracleacfs           1933804  0
oracleadvm            243697  1
oracleoks             420760  2 oracleacfs,oracleadvm

Alterno novamente para o usuário grid e defino as variáveis de ambiente para o ASM:

[root@exadb01 ~]# su - grid

[grid@exadb01 ~]$ . oraenv
ORACLE_SID = [grid] ? +ASM
The Oracle base has been set to /u01/app/grid

Acesso o asmcmd:

[grid@exadb01 ~]$ asmcmd

Crio o volume desejado:

ASMCMD> volcreate -G DBFS -s 100M acfsvol01

Listo o volume criado:

ASMCMD> volinfo -a
Diskgroup Name: DBFS

         Volume Name: ACFSVOL01
         Volume Device: /dev/asm/acfsvol01-41
         State: ENABLED
         Size (MB): 128
         Resize Unit (MB): 32
         Redundancy: MIRROR
         Stripe Columns: 4
         Stripe Width (K): 128
         Usage:
         Mountpath:

Pronto, agora é só criar o diretório, formatar o volume e montar como ACFS.

Abraços e até mais,

Franky

Outros artigos sobre ACFS: Primeiros passos com o Automatic Storage Management Cluster FileSystem (ACFS) e ACFS para banco de dados e Flex ASM.