DB

[Database]Oracle XE TNS 오류 해결 방법 (TNS-12550, TNS-12560, TNS-00252)

파주상남자의 오답노트 ㅣ 2025. 3. 5. 13:49

반응형

🔹 발생한 문제

Oracle XE에서 TNS-12550, TNS-12560, TNS-00252 오류가 발생하면서 DB Listener 실행 불가

 

🔹 원인

Oracle XE는 프로세스 간 통신(IPC)을 위해 /var/tmp/.oracle/sEXPROC_FOR_XE라는 소켓 파일을 사용함.
하지만 다음과 같은 이유로 해당 파일의 소유자 및 권한이 변경되면 Oracle이 정상적으로 접근하지 못하고 TNS 오류가 발생함.

  1. 잘못된 사용자로 Oracle을 실행한 경우
    • oracle 사용자가 아닌 다른 사용자(root 등)로 Oracle을 실행하면서 파일 소유자가 바뀜.
  2. 시스템 업데이트 또는 재부팅 후 권한 변경
    • 일부 Linux 배포판에서는 /var/tmp/ 아래 파일의 소유권이 재부팅 후 변경될 수 있음.
  3. 다른 프로세스가 /var/tmp/.oracle/sEXPROC_FOR_XE 파일을 건드린 경우
    • 예를 들어, 수동으로 파일을 삭제하거나 백업/복원 과정에서 권한이 달라졌을 수 있음.

 

🔹 해결 방법

  1. 소켓 파일의 소유자를 oracle로 변경
    • oracle:oinstall → Oracle 기본 사용자 및 그룹
    • chmod 770 → Oracle 프로세스가 정상적으로 접근할 수 있도록 설정
chown oracle:oinstall /var/tmp/.oracle/sEXPROC_FOR_XE
chmod 770 /var/tmp/.oracle/sEXPROC_FOR_XE
  1. Oracle 리스너 및 DB 재시작
    • oracle 사용자로 리스너 및 DB를 다시 실행
sudo su - oracle lsnrctl stop lsnrctl start sqlplus / as sysdba startup

🔹 결론

이 문제는 Oracle이 IPC 통신을 위해 사용하는 소켓 파일의 소유자가 변경되면서 발생함.
파일 소유권과 권한을 수정하고 항상 oracle 사용자로 실행하면 정상적으로 해결됨. 🚀

반응형

'DB' 카테고리의 다른 글

[Database] SPOOL 개념과 사용법  (0) 2025.03.19
[Database] ORA-04030 원인,해결방법  (0) 2025.03.19
[Database]Oralce Shirink  (0) 2025.03.05
[Database]Global Index VS Local Index  (0) 2025.03.05
[Database] Index란?  (0) 2025.03.04