안녕하세요! 오늘은 리눅스 환경에서 Oracle 데이터베이스를 안전하고 정상적으로 종료하고 재시작하는 방법에 대해 다뤄보겠습니다. 서버 유지보수나 리눅스 시스템 재기동 시, Oracle 데이터베이스 인스턴스와 리스너(Listener)를 올바르게 관리하는 것은 매우 중요합니다. Oracle DB 재시작 과정을 단계별로 정리했습니다.
개요
Oracle 데이터베이스는 두 가지 주요 구성 요소로 운영됩니다:
- 인스턴스(Instance): 데이터베이스의 메모리와 프로세스를 관리하며, 실제 데이터 작업을 수행합니다
- (예: ora_pmon_<ORACLE_SID> 프로세스).
- 리스너(Listener): 외부 네트워크 연결을 처리하는 프로세스(tnslsnr)로, 클라이언트가 데이터베이스에 접근할 수 있도록 합니다.
재시작 시에는 리스너를 먼저 종료하고 인스턴스를 종료하는 순서를 따르며, 시작 시에는 인스턴스를 먼저 시작한 후 리스너를 시작합니다. 아래에서 리눅스 환경에서의 재시작 과정을 자세히 설명하겠습니다.
Oracle DB 서비스 종료하기
데이터베이스를 안전하게 종료하려면 다음 단계를 순서대로 수행하세요. 모든 명령은 oracle 사용자 또는 적절한 권한이 있는 계정으로 실행해야 합니다.
1. 리스너 상태 확인
먼저, 리스너가 실행 중인지 확인합니다. 터미널에서 다음 명령어를 입력합니다:
lsnrctl status
이 명령어는 리스너의 상태, 포트(기본적으로 1521), 연결된 서비스 정보를 출력합니다. 리스너가 정상적으로 작동 중인지 확인하세요.
또한, 리눅스에서 프로세스를 확인하여 tnslsnr가 실행 중인지 점검할 수 있습니다:
ps -ef | grep tnslsnr
출력에 tnslsnr 프로세스가 나타나면 리스너가 활성화된 상태입니다.
2. 리스너 종료
리스너를 종료하려면 다음 명령어를 실행합니다:
lsnrctl stop
명령어가 성공적으로 실행되면 리스너가 종료되고, 네트워크를 통한 외부 연결이 차단됩니다. 다시 ps -ef | grep tnslsnr를 실행하여 tnslsnr 프로세스가 사라졌는지 확인하세요.
3. 데이터베이스 인스턴스 종료
리스너가 종료된 후, 데이터베이스 인스턴스를 종료합니다. 환경 변수를 설정한 후 SQL*Plus에 접속합니다:
export ORACLE_SID=<your_sid>
export ORACLE_HOME=/oracle/app/oracle/product/19.0.0/db_1
sqlplus / as sysdba
SQL*Plus에서 다음 명령어를 실행하여 데이터베이스를 종료합니다:
SQL> SHUTDOWN IMMEDIATE;
- SHUTDOWN IMMEDIATE: 모든 활성 세션을 종료하고, 트랜잭션을 롤백한 후 데이터베이스를 안전하게 닫습니다.
- 만약 SHUTDOWN IMMEDIATE가 응답하지 않거나 문제가 발생한다면, SHUTDOWN ABORT를 사용할 수 있지만, 이는 다음 시작 시 복구가 필요할 수 있으므로 주의해야 합니다.
종료 후, Oracle 관련 프로세스가 사라졌는지 확인합니다:
ps -ef | grep ora_
ora_pmon_<ORACLE_SID>와 같은 프로세스가 없어야 정상적으로 종료된 것입니다.
Oracle DB 서비스 시작하기
데이터베이스를 다시 시작하려면 다음 단계를 순서대로 수행하세요.
1. 데이터베이스 인스턴스 시작
환경 변수를 설정하고 SQL*Plus에 접속합니다:
export ORACLE_SID=<your_sid>
export ORACLE_HOME=/oracle/app/oracle/product/19.0.0/db_1
sqlplus / as sysdba
데이터베이스를 시작하려면 다음 명령어를 실행합니다:
SQL> STARTUP;
STARTUP 명령어는 데이터베이스를 NOMOUNT, MOUNT, OPEN 단계로 순차적으로 시작합니다. 정상적으로 실행되면 데이터베이스가 오픈 상태가 됩니다. 프로세스 확인을 통해 인스턴스가 시작되었는지 점검합니다:
ps -ef | grep ora_pmon
ora_pmon_<ORACLE_SID> 프로세스가 나타나면 인스턴스가 정상적으로 시작된 것입니다.
2. 리스너 시작
인스턴스가 시작된 후, 리스너를 시작하여 외부 네트워크 연결을 활성화합니다:
lsnrctl start
리스너가 시작되면 tnslsnr 프로세스가 실행됩니다. 다음 명령어로 리스너 상태를 확인하세요:
lsnrctl status
3. 연결 테스트
데이터베이스와 리스너가 정상적으로 시작되었는지 확인하기 위해, 클라이언트 도구(예: SQL*Plus)를 사용하여 접속을 시도합니다:
sqlplus username/password@//<host>:<port>/<service_name>
예시:
sqlplus scott/tiger@//localhost:1521/orcl
접속이 성공하면 데이터베이스 재시작이 정상적으로 완료된 것입니다.
추가 팁: 리눅스 환경 설정
리눅스 환경에서 Oracle 재시작을 간소화하려면 다음 사항을 고려하세요:
- 환경 변수 설정: .bashrc 또는 .bash_profile에 ORACLE_SID, ORACLE_HOME, PATH를 추가하여 명령어 실행을 간편하게 합니다:
export ORACLE_SID=orcl
export ORACLE_HOME=/oracle/app/oracle/product/19.0.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
- 스크립트 자동화: 리스너와 인스턴스 시작/종료를 자동화하려면 스크립트를 작성하고 crontab 또는 systemd 서비스로 등록하세요.
예방 및 주의사항
Oracle 데이터베이스를 정상적으로 재시작하려면 다음 모범 사례를 따르세요:
- 순서 준수: 리스너를 먼저 종료하고 인스턴스를 나중에 종료하세요. 시작 시에는 반대 순서로 진행합니다.
- 권한 확인: oracle 사용자로 명령을 실행하며, 필요한 경우 sudo를 사용하세요.
- 로그 점검: 종료 또는 시작 중 문제가 발생하면 알림 로그(/oracle/app/oracle/diag/rdbms/<db_name>/<sid>/trace/alert_<sid>.log)를 확인하세요.
- 백업: 중요한 데이터베이스라면 재시작 전에 백업을 수행하세요.
- 디스크 공간 확인: 아카이브 로그 디렉토리나 데이터 파일 디렉토리의 디스크 공간이 충분한지 확인하세요.
마무리
리눅스 환경에서 Oracle 데이터베이스를 정상적으로 재시작하려면 리스너와 인스턴스의 종료 및 시작 순서를 철저히 지켜야 합니다.
이 글이 Oracle 데이터베이스 관리자나 리눅스 서버 관리자에게 도움이 되길 바랍니다! 추가 질문이나 더 자세한 도움이 필요하면 언제든 댓글로 남겨주세요. 데이터베이스 관리 팁을 계속 공유하겠습니다. 😊
'리눅스' 카테고리의 다른 글
ORA-01078 및 LRM-00109 에러: Oracle 데이터베이스 시작 실패 해결 방법 (0) | 2025.05.08 |
---|---|
ORA-03114: Not Connected to ORACLE 에러의 원인과 해결 방법 (0) | 2025.05.07 |
ORA-01149: Cannot Shutdown - File Has Online Backup Set 에러 해결 방법 (0) | 2025.05.06 |
docker에서 MinIO 설치 및 구성: 초보자를 위한 완벽 가이드 🗄️ (1) | 2025.05.01 |
오라클 데 19c 설치 가이드: 스크린샷 기반 단계별(Centos7) (0) | 2025.05.01 |