본문 바로가기
Data & Programming/Oracle

[오라클-오류] ORA-15477: cannot communicate with the volume driver

by 눈부셔™ 2023. 8. 30.
728x90

[Oracle-오류] ORA-15477: cannot communicate with the volume driver

오라클 오류코드인 ORA-15477은 Oracle Automatic Storage Management (ASM) 볼륨 드라이버와 통신할 수 없을 때 발생하는 에러입니다. 이 에러의 원인과 해결방안을 알아보겠습니다.

ORA-15477

[오류 내용]

ORA-15477 에러는 Oracle ASM 볼륨 드라이버와 통신할 수 없을 때 발생하는 에러입니다. Oracle ASM은 Oracle 데이터베이스의 스토리지 관리 솔루션으로, 디스크 그룹(disk group)이라는 논리적인 스토리지 풀을 제공합니다. 디스크 그룹은 하나 이상의 디스크를 포함하며, ASM 볼륨 드라이버를 통해 데이터베이스 인스턴스와 통신합니다.

 

ORA-15477 에러는 다음과 같은 형식으로 출력됩니다.

ORA-15477: cannot communicate with the volume driver (dbd error: ocistmtexecute)

 

 

[오류 원인]

ORA-15477 에러는 다음과 같은 상황에서 발생할 수 있습니다.

  • ASM 볼륨 드라이버가 로드되지 않았거나, 정상적으로 작동하지 않는 경우
  • ASM 디스크 그룹의 속성을 변경하려고 할 때, 예를 들어 compatible.advm 속성을 변경하려고 할 때
  • ASM 디스크 그룹에 접근하려고 할 때, 예를 들어 SQL*Plus나 ASMCMD 명령어를 사용할 때
  • ASM 디스크 그룹의 상태가 정상이 아닌 경우, 예를 들어 디스크가 손상되었거나, 네트워크 장애가 발생한 경우

 

 

[오류 해결 방법]

ORA-15477 에러를 해결하기 위해서는 다음과 같은 절차를 따라야 합니다.

1. ASM 볼륨 드라이버가 로드되었는지 확인합니다. Linux에서는 `lsmod | grep oracleasm` 명령어로 확인할 수 있습니다. Windows에서는 `sc query oracleasm` 명령어로 확인할 수 있습니다³. 만약 ASM 볼륨 드라이버가 로드되지 않았다면, 로드하도록 합니다. Linux에서는 `modprobe oracleasm` 명령어로 로드할 수 있습니다. Windows에서는 `sc start oracleasm` 명령어로 로드할 수 있습니다.


2. ASM 볼륨 드라이버의 권한과 소유자를 확인합니다. 

Linux에서는 `/dev/oracleasm` 디렉토리와 그 하위 파일들의 권한과 소유자가 oracle 사용자와 dba 그룹에 속해야 합니다.

Windows에서는 `oracleasm.sys` 파일의 권한과 소유자가 oracle 사용자와 ora_dba 그룹에 속해야 합니다.

만약 권한이나 소유자가 잘못 설정되었다면, 수정하도록 합니다. Linux에서는 `chown`과 `chmod` 명령어로 수정할 수 있습니다. Windows에서는 파일 속성 창에서 수정할 수 있습니다.


3. ASM 인스턴스와 데이터베이스 인스턴스가 정상적으로 구동되었는지 확인합니다.

`ps -ef | grep pmon` 명령어로 프로세스를 확인할 수 있습니다. 만약 인스턴스가 구동되지 않았다면, 구동하도록 합니다. `sqlplus / as sysasm` 명령어로 ASM 인스턴스에 접속하고, `startup` 명령어로 ASM 인스턴스를 구동할 수 있습니다. `sqlplus / as sysdba` 명령어로 데이터베이스 인스턴스에 접속하고, `startup` 명령어로 데이터베이스 인스턴스를 구동할 수 있습니다.


4. ASM 디스크 그룹의 상태를 확인합니다. `sqlplus / as sysasm` 명령어로 ASM 인스턴스에 접속하고, `select name, state from v$asm_diskgroup;` 명령어로 디스크 그룹의 상태를 확인할 수 있습니다. 만약 디스크 그룹의 상태가 MOUNTED가 아니라면, MOUNTED 상태로 변경하도록 합니다. `alter diskgroup <diskgroup_name> mount;` 명령어로 디스크 그룹을 마운트할 수 있습니다.


5. ASM 디스크 그룹의 속성을 변경하려고 할 때 발생하는 경우, compatible.advm 속성을 변경하기 전에 다음과 같은 조건을 만족해야 합니다.

  • ASM 인스턴스와 데이터베이스 인스턴스가 모두 셧다운되어야 합니다.
  • ASM 볼륨 드라이버가 언로드되어야 합니다.
  • compatible.asm 속성이 compatible.advm 속성과 같거나 높아야 합니다.
  • compatible.rdbms 속성이 compatible.advm 속성과 같거나 높아야 합니다.
반응형


[에러의 예시]

 

ASM 볼륨 드라이버가 로드되지 않은 상태에서 SQL*Plus를 통해 ASM 디스크 그룹에 접근하려고 할 때 발생하는 경우입니다.

1
2
3
4
5
6
7
8
9
$ sqlplus / as sysasm
 
SQL*Plus: Release 11.2.0.3.0 Production on Wed May 13 10:15:23 2020
 
Connected to an idle instance.
 
SQL> startup
ORA-15032not all alterations performed

해결방법은 다음과 같습니다.

1. ASM 볼륨 드라이버가 로드되었는지 확인합니다.

1
$ lsmod | grep oracleasm

아무런 출력이 없다면, ASM 볼륨 드라이버가 로드되지 않았음을 의미합니다.


2. ASM 볼륨 드라이버를 로드합니다.

1
$ modprobe oracleasm
cs


3. 다시 SQL*Plus를 통해 ASM 디스크 그룹에 접근합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ sqlplus / as sysasm
 
SQL*Plus: Release 11.2.0.3.0 Production on Wed May 13 10:18:45 2020
 
Connected to an idle instance.
 
SQL> startup
ASM instance started
 
Total System Global Area 283930624 bytes
Fixed Size                  2229688 bytes
Variable Size             256552952 bytes
ASM Cache                  25165824 bytes
ASM diskgroups mounted

 

 

 

 

#Oracle  #오라클  #오라클 오류코드  #ORA-15477  #오류해결  #ASM

728x90