오라클을 기동하자!!
흔히 알듯
$ sqlplus '/as sysdba'
SQL> startup
이거 하나면 된다.
DB를 운영하는 입장에서 이거만 알면 안되는걸 알기때문에 startup을 눌렀을때 내부에서는 어떤 과정이 있는지 살펴보자.
결국 무슨 말이냐.
서버에서 오라클이 필요로하는 메모리 영역 = SGA(버퍼캐시, 리두로그버퍼, 공유 풀) + 백그라운드 프로세스(LGWR, PMON, SMON ...)
그러면 필요로 하는 메모리 영역은 뭘 읽고 생기느냐?
pfile, spfile을 읽고서 딱 인스턴스만 생성.(pfile과 spfile이 같이 있으면 spfile이 우선)
But, nomount로 실행시에도 에러가 발생할 수 있음
1) 파라미터 값에 오류
2) SGA를 제한 크기 이상으로 생성하려하는 경우
3) 권한이 없는 유저로 시작하려는 경우
DBA로 일하면서 mount로 기동 후 작업할게 있다고들 하는데 아직 나는 mount로 기동하고 작업해본적은 없다.
학교다닐적 실습할때 mount로 기동하고 백업이랑 복구정도만 해본 기억이...
mount기동 시, 대부분 데이터베이스 자체에 대한 변경이나 수정이 필요한 경우이다.
SQL> alter database archivelog;
복구시 필요한 아카이브 옵션을 변경하거나 백업, 복구를 실행할 때 필요한 시작 모드!
또한 데이터베이스가 마운트됨에 따라서 control_files 의 위치를 확인하고 오픈.
말그대로 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]