-
Admin 실습 01: 인스턴스 기동 & 파라미터 파일DB 스터디/01_Admin 2026. 2. 21. 20:23
실습 스크립트 전체 보기: https://github.com/nsylove97/Seongryeol-OracleDB-Portfolio
실습 환경
OS Oracle Linux 7.9 (VMware Virtual Machine) DB Oracle Database 19c 접속 툴 SQL*Plus, MobaXterm(SSH) 1. SQL*Plus 접속 방식 — 로컬 vs 클라이언트
-- 로컬 접속 (서버 내부에서 직접) sqlplus hr/hr -- 클라이언트 방식 (@가 붙음, 네트워크를 통한 원격 접속) sqlplus hr/hr@oel7vr:1521/orcl -- 형식: sqlplus 계정/비번@호스트:포트/서비스명- @ 기호가 붙으면 네트워크를 통해 리스너를 경유하는 클라이언트 접속.
- 인스턴스 1개는 반드시 DB 1개와만 연결됨.

hr/hr 접속 모습 
클라이언트 방식 접속시, 리스너가 없으면 ORA-12541 오류 발생 
lsnrctl start로 리스너 작동 시작 
클라리언트 접속 성공
2. Alert Log 모니터링 실습
Alert Log는 장애 발생 시 가장 먼저 확인하는 파일.
1. 로그 경로 확인: diagnostic_dest 파라미터 확인
-- SQL*Plus에서 경로 확인 show parameter diagnostic_dest
sysdba 계정으로 diagnostic_dest 파라미터 확인 Alert Log 기본 경로: <diagnostic_dest>/diag/rdbms/<db_name>/<db_unique_name>/trace/alert_<SID>.log
*Virtual Machine에서 경로: /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log

orcl DB의 Alert Log 파일 확인 2. 로그 확인 명령어
-- 전체 출력 cat alert_orcl.log -- 실시간 모니터링 (Ctrl+C로 종료) tail -f alert_orcl.log
Alert 로그 출력 예시 (Deadlock 테스트한 내용 기록됨) Alert 로그에 기록되는 정보
- 인스턴스 시작/종료 상태 변화
- DDL 관련 구조적 변경
- 에러 및 경고 (예: ORA-600 internal error)
3. 인스턴스 기동 4단계 실습
인스턴스는 Shutdown → Nomount → Mount → Open 순서로 기동
SHUTDOWN ──► NOMOUNT ──► MOUNT ──► OPENSHUTDOWN
DB가 꺼진 상태에서도 OS 레벨에서는 아래 작업이 가능함.
-- 파일 복사/이동 cp users01.dbf /home/oracle -- 권한 변경 chown oracle:oinstall users01.dbf chmod 640 users01.dbf
DB를 shutdown 상태로 전환 
파일 복사 
권한 변경 NOMOUNT
파라미터 파일(pfile/spfile)을 읽어 인스턴스(메모리+프로세스)만 기동하는 단계.
-- nomount 단계로 진입 STARTUP NOMOUNT;
nomount로 들어갈 때의 Alert log 기록 
파라미터 파일에서 읽은 non-default 파라미터 값도 출력됨 
이후 background process 동작 시작 파라미터 파일 종류 비교
구분 pfile spfile 형식 텍스트 파일 바이너리 파일 수정 방법 vi 편집기 직접 수정 ALTER SYSTEM 명령으로만 수정 위치 $ORACLE_HOME/dbs/initorcl.ora $ORACLE_HOME/dbs/spfileorcl.ora 반영 시점 DB 재시작 후 동적 파라미터는 즉시, 정적은 재시작 필요 우선순위 spfile 없을 때 사용 spfile이 있으면 우선 적용 pfile ↔ spfile 상호 변환
-- pfile로부터 spfile 생성 CREATE SPFILE FROM PFILE; -- spfile로부터 pfile 생성 CREATE PFILE FROM SPFILE;
spfile만 있는 상태 
sys계정으로 spfile로부터 pfile 생성, initorcl.ora (pfile) 확인 가능 NOMOUNT 단계에서 할 수 있는 작업
-- 1. 컨트롤 파일 재생성 -- 컨트롤 파일이 손상되어 새로 만들어야 할 때 ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '/home/oracle/ctltrace.sql'; -- 재생성 스크립트 추출 (open 단계에서) -- 컨트롤 파일 재생성 sql파일 STARTUP NOMOUNT CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 '/u01/app/oracle/oradata/ORCL/redo01.log' SIZE 50M BLOCKSIZE 512, GROUP 2 '/u01/app/oracle/oradata/ORCL/redo02.log' SIZE 50M BLOCKSIZE 512, GROUP 3 '/u01/app/oracle/oradata/ORCL/redo03.log' SIZE 50M BLOCKSIZE 512 -- STANDBY LOGFILE DATAFILE '/u01/app/oracle/oradata/ORCL/system01.dbf', '/u01/app/oracle/oradata/ORCL/sysaux01.dbf', '/u01/app/oracle/oradata/ORCL/undotbs01.dbf', '/u01/app/oracle/oradata/ORCL/users01.dbf' CHARACTER SET AL32UTF8 ; -- 2. 데이터베이스 신규 생성 -- 완전히 새로운 DB를 만들 때 CREATE DATABASE newdb USER SYS IDENTIFIED BY oracle USER SYSTEM IDENTIFIED BY oracle LOGFILE GROUP 1 ('/oradata/orcl/redo01.log') SIZE 50M, GROUP 2 ('/oradata/orcl/redo02.log') SIZE 50M, GROUP 3 ('/oradata/orcl/redo03.log') SIZE 50M MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXDATAFILES 100 MAXINSTANCES 1 DATAFILE '/oradata/orcl/system01.dbf' SIZE 500M REUSE SYSAUX DATAFILE '/oradata/orcl/sysaux01.dbf' SIZE 500M REUSE DEFAULT TABLESPACE users DATAFILE '/oradata/orcl/users01.dbf' SIZE 200M REUSE DEFAULT TEMPORARY TABLESPACE temp TEMPFILE '/oradata/orcl/temp01.dbf' SIZE 100M REUSE UNDO TABLESPACE undotbs1 DATAFILE '/oradata/orcl/undotbs01.dbf' SIZE 200M REUSE CHARACTER SET AL32UTF8 NATIONAL CHARACTER SET AL16UTF16;
컨트롤파일 재생성 스크립트 추출 후 확인 
nomount 단게에서 resetlogs로 컨트롤 파일 재생성 
일반 open은 안 되고, resetlogs로 open MOUNT 단계
컨트롤 파일을 열어 DB의 물리적 구조를 인식하는 단계.
-- mount 단계로 진입 ALTER DATABASE MOUNT;MOUNT 단계에서만 가능한 작업들
-- 아카이브 로그 모드 전환 ALTER DATABASE ARCHIVELOG; -- 데이터파일 경로 변경 ALTER DATABASE RENAME FILE '/old/path/data01.dbf' TO '/new/path/data01.dbf'; -- 데이터베이스 복구 수행 RECOVER DATABASE;아카이브 로그 모드 전환

노 아카이브 모드인 것 확인 archive log list 명령어로 현재 아카이브 모드 확인 (Open 상태)

아카이브 모드로 전환 DB 종료 후 MOUNT 단계로 진입.
alter database archivelog 명령어로 아카이브 모드로 전환.
다시 아카이브 모드 확인. (No Archive Mode --> Archive Mode로 전환됨)

open 상태에서도 아카이브 모드 확인 
db_recovery_file_dest 파라미터 값 확인 log_archive_dest 파라미터 값을 따로 주지 않았기 때문에 db_recovery_file_dest 파라미터 값에 나온 경로로 저장됨.

archivelog 폴더 확인 db_recovery_file_dest 파라미터 값에 나온 경로에서 archivelog 폴더 확인 가능.

log switch 발생 후, archive log 파일 생성된 것 확인 테스트를 위해 log switch를 실행한 뒤, 생성된 아카이브 로그 파일 확인 가능.

아카이브 로그 파일명 형식 확인 생성된 아카이브 로그 파일은 log_archive_format 파라미터 값에 따라 이름이 자동 부여됨.
%t: redo thread number
%s: log sequence number
%r: resetlogs ID
데이터파일 경로 변경

변경 전 데이터파일 경로 확인 
DB 종료 후, users 데이터 파일을 홈 디렉토리로 복사 
mount 상태에서 데이터 파일 경로 변경, DB 오픈 
변경된 데이터파일 경로 확인 가능 OPEN
사용자가 실제로 DB를 사용할 수 있는 최종 단계.
-- open 단계로 진입 ALTER DATABASE OPEN; -- 처음부터 한 번에 OPEN까지 STARTUP;OPEN 시 내부 동작
- Control File에서 데이터파일과 Redo Log 파일 경로 확인
- SMON 프로세스가 데이터 일관성 검사
- 비정상 종료 이력이 있으면 Instance Recovery(Crash Recovery) 자동 수행
- Roll Forward: Redo Log를 읽어 미반영 변경사항을 데이터 파일에 적용
- Roll Back: 미완료 트랜잭션을 Undo로 취소
4. 강제 재시작 & 백그라운드 프로세스 확인
-- DB 강제 종료 후 재시작 (장애 상황에서 사용) SHUTDOWN ABORT; STARTUP;SHUTDOWN ABORT 후 재시작 — 인스턴스 리커버리 확인

실습 전 인스턴스 상태 확인 후, test계정으로 접속 
update 작업 후 커밋 안 함. (미완료 트랜잭션) 
다른 세션에서 shut abort로 DB 강제 종료 후 다시 startup, 이후 인스턴스 작동 확인 
Alert Log에서 DB가 오픈된 후 crash recovery(인스턴스 리커버리) 진행된 것 확인 가능. 
test 계정에서 커밋 안 한 트랜젝션은 rollback 백그라운드 프로세스 확인 및 강제 종료 실습
-- orcl 인스턴스의 백그라운드 프로세스 목록 확인 ps -ef | grep orcl -- 출력 예시 oracle 29938 1 0 19:54 ? 00:00:00 ora_pmon_orcl --여기서 29938이 PID -- 특정 프로세스 강제 종료 kill -9 [PID]
ps 명령어로 출력한 orcl 인스턴스 백그라운드 프로세스 목록 주요 백그라운드 프로세스 역할 정리
- ora_pmon_orcl: 비정상 종료된 프로세스 정리, 리스너에 인스턴스 등록
- ora_smon_orcl: 인스턴스 리커버리 수행, 임시 세그먼트 정리
- ora_dbw0_orcl: 더티 버퍼를 데이터파일에 기록 (DB 라이터)
- ora_lgwr_orcl: 리두 로그 버퍼를 리두 로그 파일에 기록 (로그 라이터)
- ora_ckpt_orcl: 체크포인트 발생 시 컨트롤 파일과 데이터파일 헤더 업데이트

lgwr PID 확인 후 강제 종료, ps 명령어로 백그라운드 프로세스 모두 사라진 것 확인 
alert log에도 기록 
DB 재시작, 인스턴스 상태 확인 
Alert log에 crash recovery(인스턴스 리커버리) 진행된 것 기록됨 5. SCOPE 옵션으로 파라미터 변경 범위 제어
-- 메모리에만 적용 (재시작하면 원상태로 복구, 동적 파라미터만 가능) ALTER SYSTEM SET [파라미터] = [값] SCOPE=MEMORY; -- spfile에만 기록 (재시작 후 적용, 정적 파라미터 수정 시 필수) ALTER SYSTEM SET [파라미터] = [값] SCOPE=SPFILE; -- 즉시 적용 + spfile에도 기록 (동적 파라미터만 가능) ALTER SYSTEM SET [파라미터] = [값] SCOPE=BOTH;
실습 전 파라미터 값 확인 job_que_processes는 80, processes는 320.
SCOPE=MEMORY

값 바뀐 것 확인 alter system 명령어로 job_que_processes를 5로 변경하고, scope=memory.
show parameter로 변경된 값 확인 가능.

DB 재시작 후 복구된 값 확인 DB 재시작하고 확인하면 원래 값인 80으로 복구됨.
SCOPE=SPFILE

아직 바뀌지 않은 값 확인. 이번엔 scope=spfile로 processes 파라미터 값 변경.
show parameter로 확인해도 아직 바뀌지 않음.

DB 재시작 후 변경된 값 확인 가능. DB 재시작하고 확인하면 변경된 값인 200 확인 가능.
SCOPE=BOTH
scope=both를 주면, 바로 적용되고 DB 재시작 후에도 유지됨

변경된 즉시, 재부팅 후에도 유지되는 것 확인 가능. 정적 파라미터에 SCOPE=BOTH 하면 에러 발생
-- processes는 정적 파라미터 → SCOPE=BOTH 하면 에러 발생 ALTER SYSTEM SET processes=300 SCOPE=BOTH; -- ORA-02095: specified initialization parameter cannot be modified
정적 파라미터 processes는 scope=spfile일 때만 변경 가능
실습 핵심 요약
주제 핵심 포인트 접속 방식 @ 유무로 로컬/클라이언트 구분 Alert Log tail -f로 실시간 모니터링 기동 단계 SHUTDOWN → NOMOUNT → MOUNT → OPEN NOMOUNT 단계 컨트롤 파일 재생성, DB 신규 생성 MOUNT 단계 아카이브 로그 모드 전환, 파일 경로 변경 가능 인스턴스 리커버리 SMON이 Roll Forward + Roll Back 자동 수행 파라미터 파일 spfile 우선 적용, pfile은 vi 수정 가능 SCOPE 옵션 정적 파라미터는 SCOPE=SPFILE만 가능 'DB 스터디 > 01_Admin' 카테고리의 다른 글
Admin 실습 06: 성능 모니터링 & AWR, Resumable (0) 2026.03.09 Admin 실습 05: Lock & Undo & 감사(Audit) (0) 2026.03.09 Admin 실습 04: 사용자 관리 & 권한 / 롤 / 프로파일 (0) 2026.03.08 Admin 실습 03: DB 수동 생성 & 네트워크 구성, DB 링크 (0) 2026.03.07 Admin 실습 02: 테이블스페이스 (0) 2026.02.22