
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 25615Versã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-0Versão do ASM usando discos com AFD:
[grid@oraclesv ~]$ asmcmd -V
asmcmd version 19.19.0.0.0Disk 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/DATA36Apó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
512Verificaçã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
4096Verificaçã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
512Verificaçã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.oracle.com/cd/E82638_01/ladbi/database-installation-guide-linux.pdf