오라클 시작 과정

싱하·2023년 8월 31일
0

oracle

목록 보기
3/6

오라클을 기동하자!!

흔히 알듯

$ sqlplus '/as sysdba'
SQL> startup

이거 하나면 된다.

DB를 운영하는 입장에서 이거만 알면 안되는걸 알기때문에 startup을 눌렀을때 내부에서는 어떤 과정이 있는지 살펴보자.

인스턴스 시작(startup instance -> Nomount)

  • 일반 컴퓨터와 마찬가지로 전원을 켜면 운영체제의 물리적 메모리에 필요한 메모리영역을 생성해야한다.

결국 무슨 말이냐.
서버에서 오라클이 필요로하는 메모리 영역 = SGA(버퍼캐시, 리두로그버퍼, 공유 풀) + 백그라운드 프로세스(LGWR, PMON, SMON ...)

그러면 필요로 하는 메모리 영역은 뭘 읽고 생기느냐?
pfile, spfile을 읽고서 딱 인스턴스만 생성.(pfile과 spfile이 같이 있으면 spfile이 우선)

But, nomount로 실행시에도 에러가 발생할 수 있음
1) 파라미터 값에 오류
2) SGA를 제한 크기 이상으로 생성하려하는 경우
3) 권한이 없는 유저로 시작하려는 경우

데이터베이스 마운트(Mount)

DBA로 일하면서 mount로 기동 후 작업할게 있다고들 하는데 아직 나는 mount로 기동하고 작업해본적은 없다.
학교다닐적 실습할때 mount로 기동하고 백업이랑 복구정도만 해본 기억이...

mount기동 시, 대부분 데이터베이스 자체에 대한 변경이나 수정이 필요한 경우이다.

SQL> alter database archivelog;

복구시 필요한 아카이브 옵션을 변경하거나 백업, 복구를 실행할 때 필요한 시작 모드!

또한 데이터베이스가 마운트됨에 따라서 control_files 의 위치를 확인하고 오픈.

  • 일반 사용자들은 접근 불가. DBA만 접속이 가능

데이터베이스 오픈(Open)

말그대로 DB가 정상적으로 기동됐다. 일반 사용자들도 들어올 수 있다는 환경이 되었다는 것이다.
컨트롤파일에 있는 정보를 사용하여 데이터 파일, 리두로그파일을 사용할 수 있게된다.
백그라운드 프로세스 중 SMON이라는 놈은 DB가 오픈되는 순간 리두 로그 파일에 대해 일관성 체크를 하고 이상하면 instance recovery라는 작업을 수행하여 일관성을 유지하도록 만듦.

데이터베이스 기동 순서 예시

# nomout -> mount -> open
SQL> startup nomount;

SQL> alter database mount;

SQL> alter database open;

데이터 베이스 시작 옵션

startup [force] [restrict] [pfile=file name]
        [open] [recover] [database] | mount | nomount]
  • open : 데이터 베이스 오픈. 사용자들 접속 가능 상태
  • mount : 인스턴스 메모리에 생성 + 컨트롤 파일 사용가능 but 데이터파일, 리두로그파일 오픈X
  • nomount : 인스턴스만 메모리에 생성
  • pfile =parfile : spfile을 기본적으로 사용하지만 임의로 pfile을 사용하여 시작하려는 경우
  • restrict : Restrict session이라는 옵션을 가진 사용자만 접속이 가능
  • recover : 오픈 동시에 미디어 복구(Media Recovery) 실행
  • force : 인스턴스 시작 전 그 이전에 사용중인 인스턴스 종료.
profile
끄적끄적...

0개의 댓글

관련 채용 정보