[Oracle] ORA-12791 oradism 권한 오류

반응형
ORA-12791 oradism 권한 오류

ORA-12791 oradism 권한 오류

증상
SQL> startup 실행 시 다음 오류로 인스턴스 기동 실패
ORA-12791: The oradism utility does not have proper permissions.

장애 개요

ORA-12791은 Oracle이 기동 과정에서 사용하는 oradism 유틸리티 권한이 올바르지 않을 때 발생한다. 일반적으로는 oradism 파일의 소유자/권한(setuid)이 깨졌거나, ORACLE_HOME이 있는 파일시스템이 nosuid로 마운트되어 setuid가 무시되는 경우가 대표적이다.

환경

OS: Linux 계열 기준(예: RHEL/Rocky/CentOS)
DB: Oracle (예: 19c 포함)
기동: sqlplus / as sysdba → startup

증상

SQL> startup
ORA-12791: The oradism utility does not have proper permissions.

이 오류는 단순 SQL 권한 문제가 아니라, OS 레벨의 파일 권한/마운트 옵션 문제일 가능성이 매우 높다.

1차 점검

아래 점검은 oracle 사용자root 양쪽에서 수행한다.

1) ORACLE_HOME 확인
2) oradism 파일 존재/권한 확인
3) ORACLE_HOME 마운트 옵션(nosuid) 확인
# (oracle) ORACLE_HOME 확인
echo $ORACLE_HOME

# (oracle) oradism 권한 확인
ls -l $ORACLE_HOME/bin/oradism

# (root) ORACLE_HOME이 올라간 파일시스템 마운트 옵션 확인
df -h $ORACLE_HOME
mount | grep -E "($(df -P $ORACLE_HOME | tail -1 | awk '{print $1}')|$ORACLE_HOME)"

중요 포인트
oradism는 일반적으로 setuid(root)가 걸려 있어야 하는 경우가 많다. 파일 권한에 s 비트가 보이지 않거나, 소유자가 root가 아닌 경우가 흔한 원인이다.

심화 분석

아래 중 하나라도 해당되면 ORA-12791이 쉽게 재현된다.

  • 패치/복구/파일 복사 과정에서 oradism 권한 비트가 초기화
  • ORACLE_HOME을 NFS/NAS/특정 스토리지로 구성하면서 nosuid 옵션이 적용됨
  • 보안 정책(SELinux/보안 에이전트)로 인해 setuid 동작이 차단
  • root 스크립트(root.sh)가 미실행 또는 실행 실패로 권한 설정이 미완료
실무 팁
ORACLE_HOME이 로컬 디스크가 아니거나, 보안 강화로 nosuid가 걸린 환경에서는 setuid 기반 유틸리티들이 정상 동작하지 않는 사례가 많다.
특히 /u01, /oracle 등이 별도 마운트라면 옵션을 반드시 확인한다.

조치·복구

조치는 아래 우선순위로 진행하는 것이 안전하다.

(1) root.sh 재실행(권장)

권한이 꼬였을 때 가장 정석적인 방법은 Oracle 설치/패치 시 사용하는 root.sh를 재실행하여 필요한 바이너리 권한을 정상화하는 것이다.

# (root) ORACLE_HOME 기준 root.sh 실행
$ORACLE_HOME/root.sh

(2) ORACLE_HOME 마운트 옵션에서 nosuid 제거

mount 옵션에 nosuid가 있으면 setuid가 무시되어 권한이 맞아 보여도 실제 동작이 실패할 수 있다. 가능한 경우 nosuid 제거 후 재마운트를 검토한다.

# (root) 예시: /etc/fstab에서 nosuid 제거 후 재마운트
# mount -o remount /ORACLE_HOME_마운트포인트

(3) oradism 권한 직접 복구(대응용)

운영 제약으로 root.sh를 바로 실행하기 어렵다면, 기준 서버와 권한을 비교해 oradism만 우선 복구하는 방법도 있다. 다만 환경/버전마다 권한 정책이 다를 수 있어 최종적으로는 root.sh로 정합성을 맞추는 것을 권장한다.

# (root) oradism 소유자/그룹 확인 및 복구 (값은 환경에 따라 다를 수 있음)
ls -l $ORACLE_HOME/bin/oradism

# 아래는 "권한이 깨졌을 때 흔히 수행되는" 예시 패턴이다.
# 실제 권한은 설치 가이드/기존 정상 서버의 값에 맞춰 적용한다.
# chown root:oinstall $ORACLE_HOME/bin/oradism
# chmod 6751 $ORACLE_HOME/bin/oradism
주의
chmod 값을 “감”으로 고정 적용하지 말고, 동일 버전/동일 설치 방식의 정상 서버 권한을 기준으로 맞추는 것이 안전하다.

7️⃣ 기본 오류 대응 4단계

1) 증상 확인: ORA-12791 재현 및 alert log 확인
2) 영향 범위 확인: 단일 인스턴스/서버 전반, ORACLE_HOME 마운트 여부 확인
3) 즉시 조치: root.sh 재실행 또는 nosuid 제거/권한 복구
4) 사후 조치: 권한/마운트 표준화, 변경 이력 관리, 재발 방지 점검

재발 방지

  • ORACLE_HOME이 있는 파일시스템에 nosuid 적용 여부를 표준 점검 항목으로 포함
  • 패치/파일 복구 후 $ORACLE_HOME/bin 주요 바이너리 권한 검증 체크리스트 운영
  • 서버 보안 정책(SELinux/보안 에이전트) 변경 시 DB 기동 테스트를 변경관리 절차에 포함
  • DB 스토리지는 가능하면 로컬 디스크 기반 권장(운영 안정성 우선)

에스컬레이션

다음 경우에는 DBA/시스템팀/보안팀 합동 점검을 권장
- root.sh 재실행 후에도 ORA-12791 지속
- ORACLE_HOME이 NFS/NAS 또는 보안 강화 마운트 정책으로 관리되는 환경
- SELinux/보안 에이전트 정책 변경 직후부터 증상 발생

오류 분석 흐름도

1) ls -l $ORACLE_HOME/bin/oradism 권한 확인

2) ORACLE_HOME 마운트 옵션에 nosuid 존재 여부 확인

3) (권장) $ORACLE_HOME/root.sh 재실행

4) 권한 정상화 후 startup 재시도

5) 지속 시 SELinux/보안 정책 및 설치 정합성 점검
반응형