ERROR: unrecoverable error ORA-600 raised in ASM I/O path; terminating process 25615

Durante esta semana, ao realizar um procedimento de recuperação (restore) utilizando o RMAN em um servidor recém-provisionado, foi identificado o seguinte erro durante a operação:

ORA-600: unrecoverable error raised in ASM I/O path; terminating process 25615

A seguir são apresentadas a análise técnica das possíveis causas, a investigação realizada e as ações corretivas adotadas para solucionar o problema e restabelecer a execução do processo de restore com sucesso.

Erros:

ERROR: unrecoverable error ORA-600 raised in ASM I/O path; terminating process 25615

Versão do SO:

[root@oraclesv ~]# cat /etc/*-release | grep PRETTY
PRETTY_NAME="Oracle Linux Server 7.9"

Discos e multipath usado no ASM:

[root@oraclesv ~]# multipath -ll |grep dm- |sort
DATA01 (3600a0980383145594b3f514675534e2f) dm-19 NETAPP  ,LUN C-Mode
DATA02 (3600a0980383145594b3f514675534e49) dm-2 NETAPP  ,LUN C-Mode
DATA03 (3600a0980383145594b3f514675534e4a) dm-5 NETAPP  ,LUN C-Mode
DATA04 (3600a0980383145594b3f514675534e4b) dm-4 NETAPP  ,LUN C-Mode
DATA05 (3600a0980383145594b3f514675534e4c) dm-3 NETAPP  ,LUN C-Mode
DATA06 (3600a0980383145594b3f514675534e4d) dm-8 NETAPP  ,LUN C-Mode
DATA07 (3600a0980383145594b3f514675534e4e) dm-9 NETAPP  ,LUN C-Mode
DATA08 (3600a0980383145594b3f514675534e4f) dm-6 NETAPP  ,LUN C-Mode
DATA09 (3600a0980383145594b3f514675534e50) dm-7 NETAPP  ,LUN C-Mode
DATA10 (3600a0980383145594b3f514675534e51) dm-10 NETAPP  ,LUN C-Mode
DATA11 (3600a0980383145594b3f514675534e52) dm-11 NETAPP  ,LUN C-Mode
DATA12 (3600a0980383145594b3f514675534e53) dm-12 NETAPP  ,LUN C-Mode
DATA13 (3600a0980383145594b3f514675534e54) dm-13 NETAPP  ,LUN C-Mode
DATA14 (3600a0980383145594b3f514675534e55) dm-14 NETAPP  ,LUN C-Mode
DATA15 (3600a0980383145594b3f514675534e56) dm-15 NETAPP  ,LUN C-Mode
DATA16 (3600a0980383145594b3f514675534e57) dm-18 NETAPP  ,LUN C-Mode
DATA17 (3600a0980383145594b3f514675534e58) dm-17 NETAPP  ,LUN C-Mode
DATA18 (3600a0980383145594b3f514675534e59) dm-16 NETAPP  ,LUN C-Mode
DATA19 (3600a0980383145594b3f514675534e5a) dm-21 NETAPP  ,LUN C-Mode
DATA20 (3600a0980383145594b3f514675534e61) dm-23 NETAPP  ,LUN C-Mode
DATA21 (3600a0980383145594b3f514675534e62) dm-20 NETAPP  ,LUN C-Mode
DATA22 (3600a0980383145594b3f514675534e63) dm-24 NETAPP  ,LUN C-Mode
DATA23 (3600a0980383145594b3f514675534e64) dm-22 NETAPP  ,LUN C-Mode
DATA24 (3600a0980383145594b3f514675534e65) dm-31 NETAPP  ,LUN C-Mode
DATA25 (3600a0980383145594b3f514675534e66) dm-25 NETAPP  ,LUN C-Mode
DATA26 (3600a0980383145594b3f514675534e67) dm-30 NETAPP  ,LUN C-Mode
DATA27 (3600a0980383145594b3f514675534e68) dm-26 NETAPP  ,LUN C-Mode
DATA28 (3600a0980383145594b3f514675534e69) dm-29 NETAPP  ,LUN C-Mode
DATA29 (3600a0980383145594b3f514675534e6a) dm-27 NETAPP  ,LUN C-Mode
DATA30 (3600a0980383145594b3f514675534e6b) dm-28 NETAPP  ,LUN C-Mode
DATA31 (3600a0980383145594b3f514675534e6c) dm-33 NETAPP  ,LUN C-Mode
DATA32 (3600a0980383145594b3f514675534e6d) dm-37 NETAPP  ,LUN C-Mode
DATA33 (3600a0980383145594b3f514675534e6e) dm-34 NETAPP  ,LUN C-Mode
DATA34 (3600a0980383145594b3f514675534e6f) dm-35 NETAPP  ,LUN C-Mode
DATA35 (3600a0980383145594b3f514675534e70) dm-32 NETAPP  ,LUN C-Mode
DATA36 (3600a0980383145594b3f514675534e71) dm-36 NETAPP  ,LUN C-Mode
[root@oraclesv ~]# ls -lat /sys/block/dm-*
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-37 -> ../devices/virtual/block/dm-37
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-36 -> ../devices/virtual/block/dm-36
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-35 -> ../devices/virtual/block/dm-35
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-34 -> ../devices/virtual/block/dm-34
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-33 -> ../devices/virtual/block/dm-33
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-32 -> ../devices/virtual/block/dm-32
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-31 -> ../devices/virtual/block/dm-31
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-30 -> ../devices/virtual/block/dm-30
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-29 -> ../devices/virtual/block/dm-29
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-28 -> ../devices/virtual/block/dm-28
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-27 -> ../devices/virtual/block/dm-27
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-26 -> ../devices/virtual/block/dm-26
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-25 -> ../devices/virtual/block/dm-25
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-24 -> ../devices/virtual/block/dm-24
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-23 -> ../devices/virtual/block/dm-23
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-22 -> ../devices/virtual/block/dm-22
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-21 -> ../devices/virtual/block/dm-21
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-20 -> ../devices/virtual/block/dm-20
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-19 -> ../devices/virtual/block/dm-19
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-18 -> ../devices/virtual/block/dm-18
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-17 -> ../devices/virtual/block/dm-17
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-16 -> ../devices/virtual/block/dm-16
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-15 -> ../devices/virtual/block/dm-15
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-14 -> ../devices/virtual/block/dm-14
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-13 -> ../devices/virtual/block/dm-13
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-12 -> ../devices/virtual/block/dm-12
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-11 -> ../devices/virtual/block/dm-11
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-10 -> ../devices/virtual/block/dm-10
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-9 -> ../devices/virtual/block/dm-9
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-3 -> ../devices/virtual/block/dm-3
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-5 -> ../devices/virtual/block/dm-5
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-7 -> ../devices/virtual/block/dm-7
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-2 -> ../devices/virtual/block/dm-2
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-4 -> ../devices/virtual/block/dm-4
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-6 -> ../devices/virtual/block/dm-6
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-8 -> ../devices/virtual/block/dm-8
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-1 -> ../devices/virtual/block/dm-1
lrwxrwxrwx 1 root root 0 Jul 14 17:30 /sys/block/dm-0 -> ../devices/virtual/block/dm-0

Versão do ASM usando discos com AFD:

[grid@oraclesv ~]$ asmcmd -V
asmcmd version 19.19.0.0.0

Disk Groups:

Compatibility do ASM diskgroup:

SELECT name AS diskgroup, substr(compatibility,1,12) AS asm_compat,
substr(database_compatibility,1,12) AS db_compat FROM V$ASM_DISKGROUP;

DISKGROUP                      ASM_COMPAT   DB_COMPAT
------------------------------ ------------ ------------
DATA                           19.0.0.0.0   10.1.0.0.0 

Discos usados no ASM:

[grid@oraclesv ~]$ asmcmd afd_lsdsk
--------------------------------------------------------------------------------
Label                     Filtering   Path
================================================================================
DATA01                      ENABLED   /dev/mapper/DATA01
DATA02                      ENABLED   /dev/mapper/DATA02
DATA03                      ENABLED   /dev/mapper/DATA03
DATA04                      ENABLED   /dev/mapper/DATA04
DATA05                      ENABLED   /dev/mapper/DATA05
DATA06                      ENABLED   /dev/mapper/DATA06
DATA07                      ENABLED   /dev/mapper/DATA07
DATA08                      ENABLED   /dev/mapper/DATA08
DATA09                      ENABLED   /dev/mapper/DATA09
DATA10                      ENABLED   /dev/mapper/DATA10
DATA11                      ENABLED   /dev/mapper/DATA11
DATA12                      ENABLED   /dev/mapper/DATA12
DATA13                      ENABLED   /dev/mapper/DATA13
DATA14                      ENABLED   /dev/mapper/DATA14
DATA15                      ENABLED   /dev/mapper/DATA15
DATA16                      ENABLED   /dev/mapper/DATA16
DATA17                      ENABLED   /dev/mapper/DATA17
DATA18                      ENABLED   /dev/mapper/DATA18
DATA19                      ENABLED   /dev/mapper/DATA19
DATA20                      ENABLED   /dev/mapper/DATA20
DATA21                      ENABLED   /dev/mapper/DATA21
DATA22                      ENABLED   /dev/mapper/DATA22
DATA23                      ENABLED   /dev/mapper/DATA23
DATA24                      ENABLED   /dev/mapper/DATA24
DATA25                      ENABLED   /dev/mapper/DATA25
DATA26                      ENABLED   /dev/mapper/DATA26
DATA27                      ENABLED   /dev/mapper/DATA27
DATA28                      ENABLED   /dev/mapper/DATA28
DATA29                      ENABLED   /dev/mapper/DATA29
DATA30                      ENABLED   /dev/mapper/DATA30
DATA31                      ENABLED   /dev/mapper/DATA31
DATA32                      ENABLED   /dev/mapper/DATA32
DATA33                      ENABLED   /dev/mapper/DATA33
DATA34                      ENABLED   /dev/mapper/DATA34
DATA35                      ENABLED   /dev/mapper/DATA35
DATA36                      ENABLED   /dev/mapper/DATA36

Após a análise das mensagens registradas no alert.log e a discussão do cenário com outros colegas, as evidências indicavam uma possível incompatibilidade relacionada ao subsistema de armazenamento, mais especificamente ao tamanho dos blocos lógicos/fisicos das LUNs disponibilizadas ao Oracle ASM.

Como primeira etapa da investigação, foi realizada a validação do tamanho do bloco lógico/fisico da LUN utilizada pelo ASM, com o objetivo de verificar se a configuração estava compatível com os requisitos do ambiente e descartar possíveis incompatibilidades que pudessem ocasionar o erro ORA-600 durante as operações de I/O.

Verificação do tamanho do bloco lógico (Logical Block Size) de uma LUN utilizada pelo Oracle ASM. O bloco lógico corresponde ao tamanho do bloco que o sistema operacional utiliza para endereçar o disco:

[root@oraclesv ~]# cat /sys/block/dm-19/queue/logical_block_size
512

Verificação do tamanho do bloco físico (Physical Block Size) de uma LUN utilizada pelo Oracle ASM. O bloco físico corresponde ao tamanho real do bloco gravado no dispositivo de armazenamento (hardware):

[root@oraclesv ~]# cat /sys/block/dm-19/queue/physical_block_size
4096

Verificação do tamanho dos blocos físico e lógico de todos os dispositivos gerenciados pelo Multipath:

lsblk -d -o NAME,PHY-SEC,LOG-SEC /dev/mapper/*

Verificação do Sector Size dos discos no Oracle ASM

Durante a análise, foi verificado que os discos pertencentes ao Oracle ASM estavam configurados com Sector Size = 4096 bytes, valor compatível com o tamanho do bloco físico (Physical Block Size) das LUNs apresentadas pelo subsistema de armazenamento:

[grid@oraclesv ~]$ sqlplus / as sysasm 

SET LINESIZE  500
SET PAGESIZE  1000
column name format a30
select name, sector_size from v$asm_disk order by name;

NAME                           SECTOR_SIZE
------------------------------ -----------
DATA01                                4096
DATA02                                4096
DATA03                                4096
DATA04                                4096
DATA05                                4096
DATA06                                4096
DATA07                                4096
DATA08                                4096
DATA09                                4096
DATA10                                4096
DATA11                                4096
DATA12                                4096
DATA13                                4096
DATA14                                4096
DATA15                                4096
DATA16                                4096
DATA17                                4096
DATA18                                4096
DATA19                                4096
DATA20                                4096
DATA21                                4096
DATA22                                4096
DATA23                                4096
DATA24                                4096
DATA25                                4096
DATA26                                4096
DATA27                                4096
DATA28                                4096
DATA29                                4096
DATA30                                4096
DATA31                                4096
DATA32                                4096
DATA33                                4096
DATA34                                4096
DATA35                                4096
DATA36                                4096

36 rows selected.

Durante a investigação, foi identificado que os tamanhos dos blocos físico (Physical Block Size) e lógico (Logical Block Size) das LUNs apresentavam valores diferentes dos observados no ambiente de referência. Para validar se essa configuração poderia estar relacionada ao erro ORA-600, foi realizada uma comparação com outro servidor que operava normalmente e utilizava a mesma infraestrutura de armazenamento.

A seguir, foi efetuada a verificação do tamanho do bloco físico (Physical Block Size) de uma LUN utilizada pelo Oracle ASM no servidor de referência, com o objetivo de identificar possíveis divergências de configuração entre os ambientes.

[root@oraclesv ~]$ cat /sys/block/sdd/queue/logical_block_size
512
[root@oraclesv ~]$ cat /sys/block/sdd/queue/physical_block_size
512

Verificação do sector size dos blocos dos discos no ASM:

SET LINESIZE  500
SET PAGESIZE  1000
column name format a30
select name, sector_size from v$asm_disk order by name;

NAME                           SECTOR_SIZE
------------------------------ -----------
DATA01                                 512
DATA02                                 512
DATA03                                 512
DATA04                                 512
DATA05                                 512
RECO01                                 512
RECO02                                 512


SET LINESIZE 150
SET PAGESIZE 100
SET FEEDBACK OFF
COL name FOR A20
SELECT name, 
       sector_size, 
       block_size
FROM v$asm_diskgroup;

NAME                 SECTOR_SIZE BLOCK_SIZE
-------------------- ----------- ----------
DATA                         512       4096



Com base nas validações realizadas, ficou confirmado que a causa raiz do erro era o Oracle ASM utilizando o Physical Block Size (4096 bytes) das LUNs como referência para o sector_size do diskgroup, enquanto o kernel do sistema operacional endereçava os mesmos dispositivos com o Logical Block Size (512 bytes).

A seguir são apresentadas a configuração identificada, a alteração realizada no Oracle ASM e a respectiva correção aplicada para eliminar a inconsistência e permitir a execução do restore com sucesso.

Alteração da configuração ORACLEASM_USE_LOGICAL_BLOCK_SIZE:

Como parte da correção, foi alterada a configuração do Oracle ASM para que o driver passasse a utilizar o tamanho do bloco lógico (Logical Block Size) dos dispositivos de armazenamento.

Para isso, o parâmetro ORACLEASM_USE_LOGICAL_BLOCK_SIZE foi configurado com o valor TRUE no arquivo /etc/sysconfig/oracleasm:

# STOP ALL RESOURCES
[grid@oraclesv ~]$ crsctl stop resource -all

# CONFIGURE ORACLEASM_USE_LOGICAL_BLOCK_SIZE = TRUE
[root@oraclesv ~]$ cat /etc/sysconfig/oracleasm | grep ORACLEASM_USE_LOGICAL_BLOCK_SIZE 
ORACLEASM_USE_LOGICAL_BLOCK_SIZE=true

# RESTART THE SERVER
[root@oraclesv ~]$ init 6
# DROP AND RECREATE THE DISKGROUPS WITH THE LOGICAL BLOCK SIZE OF THE LUNS, IN THIS EXAMPLE SECTOR_SIZE= 512.
[grid@oraclesv ~]$ sqlplus / as sysasm

create diskgroup DATA external redundancy disk '/dev/oracleasm/disks/DISKDATA*'   attribute 'sector_size'='512';

Após a alteração do parâmetro ORACLEASM_USE_LOGICAL_BLOCK_SIZE para TRUE e o reinício do servidor, o driver ASM passou a reconhecer corretamente o sector_size=512 dos dispositivos. Porém, como o Disk Group havia sido criado anteriormente com sector_size=4096, foi necessário recriá-lo para que os metadados ficassem consistentes com o valor correto.

SET LINESIZE 150
SET PAGESIZE 100
SET FEEDBACK OFF
COL name FOR A20
SELECT name, 
       sector_size, 
       block_size
FROM v$asm_diskgroup;

NAME                 SECTOR_SIZE BLOCK_SIZE
-------------------- ----------- ----------
DATA                         512       4096

Com esta mudança consegui criar o diskgroup e resolver o problema do ASM ao utilizar o storage NetApp.

https://docs.netapp.com/us-en/ontap-apps-dbs/oracle/oracle-host-config-asmlib-afd.html?utm_source=chatgpt.com#asm-filter-drive-afd-block-sizes

https://docs.oracle.com/en/database/oracle/oracle-database/19/ostmg/automatic-storage-management-administrators-guide.pdf

https://docs.oracle.com/cd/E82638_01/ladbi/database-installation-guide-linux.pdf

search previous next tag category expand menu location phone mail time cart zoom edit close