개요
Oracle Database의 시작(startup)과 종료(shutdown) 절차를 정리합니다. sqlplus를 통해 DB 인스턴스를 시작/종료하는 방법과 Listener 시작/종료 명령어, 그리고 운영 환경에서 자주 사용하는 startup/shutdown 옵션을 다룹니다.
Oracle 인스턴스 시작/종료 모드
Oracle Database는 단순 시작/종료가 아닌 여러 단계와 모드를 지원합니다. startup에는 NOMOUNT(파라미터 파일만 읽기), MOUNT(컨트롤 파일 읽기), OPEN(전체 운영) 세 단계가 있습니다. 일반 운영은 startup(OPEN)으로 충분하며, 복구 작업이나 리두 로그 변경은 MOUNT 단계가 필요합니다.
shutdown에는 NORMAL(모든 세션 종료 대기), IMMEDIATE(현재 트랜잭션 롤백 후 종료), TRANSACTIONAL(트랜잭션 완료 후 종료), ABORT(강제 종료, DB 불일치 가능성 있음)가 있습니다. 운영 환경에서는 ABORT는 최후 수단으로만 사용하고 IMMEDIATE를 권장합니다.
오라클 서버 시작, 종료
- 오라클 서버의 MA(Maintenance)를 위해서는 서비스를 종료, 시작 하는 과정이 필요합니다.
- 당연한 것이지만 오라클 서비스가 종료되기전에 DBMS와 연결된 커넥션을 모두 해제 해야 됩니다. 보통 WAS나 AP를 종료 시키는 것이 일련의 과정입니다.
- WAS와 AP 종료 후 Client 연결 상태 확인( 기본적으로는 커넥션을 맺은 계정명만 확인이 가능합니다.) 출처>https://stackoverflow.com/questions/1043096/how-to-list-active-open-connections-in-oracle
$ sqlplus / as sysdba
// sysdba 권한을 가진 계정으로 진행
SQL> SELECT username FROM v$session WHERE username IS NOT NULL ORDER BY username ASC;
- 서비스 종료(오라클 서비스 제어용 계정으로 진행)
$ sqlplus / as sysdba
SQL> shutdown immediate
SQL> exit
$ lsnrctl stop
- 서비스 시작(MA등의 작업 종료후 오라클 서비스 제어용 계정으로 진행)
$ lsnrctl start
$ sqlplus / as sysdba
SQL> startup
- WAS나 AP를 기동시켜 검증이 가능하겠지만 보통 정상적으로 데이터 조회가 가능한지 먼저 검증을 해보는 것이 좋습니다.
리스너(Listener) 관리
Oracle Listener는 클라이언트의 접속 요청을 수신하는 네트워크 프로세스입니다. DB 인스턴스와 별도로 동작하므로 DB가 기동되어도 Listener가 중지되면 외부 클라이언트가 접속할 수 없습니다. Listener 설정은 $ORACLE_HOME/network/admin/listener.ora에서 관리합니다.
-- Listener 상태 확인 (Oracle 계정에서 실행) $ lsnrctl status -- Listener 로그 확인 (접속 오류 진단) $ lsnrctl show log_status -- 동적 서비스 등록 확인 (DB가 기동된 경우 자동 등록) $ lsnrctl services
Oracle 서비스 시작 순서는 Listener 시작 → DB 인스턴스 시작이며, 종료 순서는 반대입니다. 자동 시작이 필요한 환경에서는 /etc/oratab에 자동 시작 플래그를 Y로 설정하고 dbstart/dbshut 스크립트를 OS 시작/종료 훅에 등록합니다.
현재 세션 및 프로세스 확인
Oracle DB 재기동 전에 현재 접속 중인 세션과 실행 중인 트랜잭션을 확인하면 불필요한 롤백과 데이터 불일치를 예방할 수 있습니다. V$SESSION 뷰에서 활성 세션 수를 확인하고, 필요한 경우 애플리케이션 측에서 연결을 먼저 끊거나 유지보수 모드로 전환한 후 DB를 종료합니다.
-- 현재 활성 세션 수 확인 SELECT COUNT(*) FROM V$SESSION WHERE STATUS = 'ACTIVE'; -- 세션별 사용자 및 프로그램 확인 SELECT SID, SERIAL#, USERNAME, STATUS, PROGRAM FROM V$SESSION WHERE TYPE = 'USER' ORDER BY STATUS;
참고
참고 문서: Oracle Listener Control Utility (lsnrctl) · Oracle 10g Startup/Shutdown 가이드