DBA 생활을 하려면 무조건 띄워 놔야 하는 창이 있다.
외우기
★ alert log file
- 오라클이 운영되고 종료될 때까지의 내용들을 저장하고 있는 파일
- 오라클 서버에서 어떤 장애가 발생했거나 문제의 징후가 보일 경우
- 이 파일 내용을 자세히 분석해보면 해답을 찾을 수 있다.
- 이 alert log file 은 꼭 띄워놓아야 한다.
퍼티 창 하나 더 띄우고 오라클 유저로 접속하기
login as: oracle
oracle@192.168.56.102's password:
Last login: Thu Dec 7 20:06:21 2023 from 192.168.56.1
[oracle@oracle ~]$ cd $ORACLE_BASE/diag/rdbms/
여기까지만 일단 오기
여기부터는 이름이 사이트마다 다름
(SID 이름을 뭘로 했느냐에 따라 달라짐)
그래서 한꺼번에 가지 않고 차근차근 가야 한다.
[oracle@oracle rdbms]$ ls
ora11g
ora11g 디렉토리로 가기
[oracle@oracle rdbms]$ cd ora11g
[oracle@oracle ora11g]$ ls
i_1.mif ora11g
ls 하면 2개의 파일이 나오는데 이 중에서 또 한번 ora11g 로 가기
[oracle@oracle ora11g]$ cd ora11g/
그 다음 ls 하면 파일들이 여러 개 나오는데
[oracle@oracle ora11g]$ ls
alert hm incpkg lck metadata_dgif stage trace
cdump incident ir metadata metadata_pv sweep
절대 여기서 alert 로 가지 말고 trace 로 가야 한다.
[oracle@oracle ora11g]$ cd trace
[oracle@oracle ora11g]$ cd trace
[oracle@oracle trace]$ pwd
/u01/app/oracle/diag/rdbms/ora11g/ora11g/trace
여기가 alert log file 이 있는 위치
아래 보이는 alert_ora11g.log 가 alert log file
(이 alert_ora11g.log 파일은 vi 편집기로 열어볼 수도 있다.)
외우기
alert log file 을 tail 기능을 써서 실행시키면
DB 가 떠 있는 동안 무슨 일이 발생했는지 alert log 에 append 하게 쓰이도록 할 수 있다.
[oracle@oracle trace]$ tail -f alert_ora11g.log
실시간으로 alertlog 에 글이 써지도록 alert log 파일 열기
[oracle@oracle trace]$ tail -F alert_ora11g.log
소문자 f 는 대문자 F 로 써도 됨, f 는 대소문자 구분을 하지 않는다.
(★ alert log file 에서 빠져나오는 법 : ctrl + c )
다시 다른 퍼티 창에서 SQL + 로 들어간 다음
DB 를 셧다운시켜 보면
원래는 alert log 는 아래 사진의 위의 창과 같은 상태인데 ↓
SQL> shutdown immediate 하는 순간
두 개 퍼티 창 중에서 위쪽 창 (alert log 창) 에 뭐가 글자가 써지면서 스르륵 올라가는 게 보인다.
위에는 DATABASE close / DATABASE DISMOUNT / INSTANCE SHUTDOWN 이라고 나오고
아래의 퍼티 창에도
이런 메시지가 뜨는데
외우기
1. DATABASE CLOSE 는 데이터 파일, 리두 로그 파일이 닫혔다는 뜻이고
2. DATABASE DISMOUNT 는 컨트롤 파일이 닫힌 것이고
(컨트롤 파일은 매우 중요, 이게 깨지면 DB 가 내려간다.)
3. INSTANCE SHUTDOWN 은 instance 가 닫혔다는 뜻
DB 가 내려갔다는 정보는 이런 식으로 alert log 에서 확인할 수 있다.
다시 아래 퍼티 창에서
SQL> startup
하면
또 위에 있는 alert log file 창에 뭐가 막 뜬다.
외우기
DB 에 뭔가 변화가 감지되는 순간
alert log file은 그걸 하나하나 다 기록하기 때문에
DB 에 언제, 어느 시간대에 무슨 문제가 발생했는지를 파악하는 데에 매우 유용하다.
★ ORACLE Database 시작
- DB 띄우기
- sql+ 에서 startup 이라는 명령어로 한다.
SQL> startup
ORACLE instance started. ----------------------- #1
Total System Global Area 711430144 bytes
Fixed Size 1367004 bytes
Variable Size 465568804 bytes
Database Buffers 239075328 bytes
Redo Buffers 5419008 bytes
Database mounted. --------------------------- #2
Database opened. --------------------------- #3
외우기
startup 의 단계 1, 2, 3
1. INSTANCE STARTED = 메모리 먼저 만들고
2. DATABASE MOUNTED = 컨트롤 파일 열고
3. DATABASE OPENED = 데이터 파일과 리두 로그 파일 열기
아까 shutdown 시에는
# SQL > shutdown immediate
1. DATABASE CLOSE = 데이터 파일, 리두 로그 파일 먼저 닫고
2. DATABASE DISMOUNT = 컨트롤 파일 닫고
3. INSTANCE SHUTDOWN = instance 를 닫았었는데
DB startup 시에는
# SQL > startup
1. INSTANCE STARTED = 메모리 먼저 만들고
2. DATABASE MOUNTED = 컨트롤 파일 열고
3. DATABASE OPENED = 데이터 파일과 리두 로그 파일 열기
이렇게 순서가 완벽히 정반대이다.
외우기
★ 스타트업의 단계
1단계 nomount / 2단계 mount / 3단계 open
1. nomount 단계 때 하는 일
- instance 시작 ( = sga 영역과 background process들을 생성)
- instance 를 시작하기 위해 메모리의 크기들, 즉
- shared pool / DBC / redo log buffer / JAVA pool / streams pool / large pool 크기를 누군가는 알고 있어야 하는데
- 그 누군가가 바로 초기 파라미터 파일 (initialization parameter file)
- 그래서 instance 를 시작할 때는 초기 파라미터 파일을 가장 먼저 본다.
- 초기 파라미터 파일의 이름은 spfile<SID>.ora 또는 init<SID>.ora (SID 는 인스턴스 이름)
- 이 초기 파라미터 파일은 무조건 $ORACLE_HOME/dbs 라는 디렉토리에 있어야 한다.
- 스타트업 시 이 위치에 초기 파라미터 파일이 없으면 DB가 올라올 수 없다.
- startup nomount 단계에서 제일 먼저 보는 파일은 spfile<SID>.ora
- spfile<SID>.ora 가 없으면 init<SID>.ora 를 찾는다.
- 만약 둘 다 없으면 오류가 발생한다.
(QUESTION. spfile을 찾아봤는데 있으면 > 그때도 init 파일을 찾아보나?
아니면 spfile 만 가지고 인스턴스를 여는 건가?
그냥 spfile 이 있으면 아예 init 은 찾아보지도 않는 건가?)
(ANSWER. spfile 이 있고 그걸로 여는 걸로 설정되어 있으면 당연히 pfile 은 굳이 찾아볼 필요가 없지...)
외우기
nomount 단계에서는
- instance 를 시작하고
- alert<SID>.log 정보가 들어가고 (alert<SID>.log 파일 즉 alert log file이 열리고)
- tracefile 이 오픈된다.
(background process 들이 감지한 정보들은 tracefile 에 기록된다.)
(QUESTION. tracefile 이 뭐야? alert log file 이 tracefile이야?)
(ANSWER. 서로 달라... trace file 은 alert log file 을 비롯한 여러가지 파일들,
trace 폴더에 있는 파일들이 다 트레이스 파일이야)
(QUESTION. 근데 alert log file 은 유저가 열어야 열리는 거잖아?
이게 nomount 단계에서 자동으로 열린다고?)
(ANSWER. 유저가 여는 거는 그냥 보려고 여는 거고...
startup 함으로써 지가 작동하는거, 그래서 alert log 파일 안에 실시간으로 뭐가 쓰이는 것)
외우기
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
- nomount 단계에서 다음 단계로 넘어가기 전에 해야 하는 일들이 있는데 그게 뭐냐면
- 1. DB 생성
- 2. control 파일이 깨졌을 경우 : nomount 까지 올려놓고 재생성하는 것
- 3. 백업, 복구 작업
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
아까, 저 파라미터 파일이 있는 위치는 $ORACLE_HOME/dbs라고 했는데.
저 파일이 있는 위치로 한번 가보자.
alert log 창 말고 다른 퍼티 창에서
SQL> show parameter spfile
spfile 이라는 파라미터 보기
파라미터 이름과 거기 설정되어 있는 값이 보인다.
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0
.4/db_1/dbs/spfileora11g.ora
이 위치가 초기 파라미터 파일이 있는 곳
(OS 에서 가볼 수도 있다.)
SQL> !
다시 os 로 빠져나와서
[oracle@oracle ~]$ cd $ORACLE_HOME/dbs
[oracle@oracle dbs]$ pwd
/u01/app/oracle/product/11.2.0.4/db_1/dbs
초기 파라미터 파일이 있는 위치 $ORACLE_HOME/dbs 로 가서
[oracle@oracle dbs]$ ls
ls 하면
hc_ora11g.dat init.ora lkORA11G orapwora11g spfileora11g.ora
파일들이 이렇게 보이는데
spfileora11g.ora 얘가 바로 초기 파라미터 파일
그런데 쟤는 바이너리(이진) 형식의 파일이라서 vi 편집기로는 열 수 없다.
쟤를 서버 파라미터 파일이라고 하는데, 서버 파라미터 파일은 vi 편집기로는 열 수 없기 때문에
따로 수정작업하는 방법이 있다. (나중에 배운다)
저 파일이 없으면 스타트업시에 오류가 난다.
오류를 한번 유발시켜 보자.
일단
[oracle@oracle dbs]$ mv spfileora11g.ora spfileora11g.bak
이렇게 저 초기 파라미터 파일의 백업본을 하나 만들어 놓고
(!!!!!!!!!!!!!!!!!!!!!!!!!! 주의! 현장에서는 mv 하면 안되고 cp 해야 함 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!)
[oracle@oracle dbs]$ ls
hc_ora11g.dat init.ora lkORA11G orapwora11g spfileora11g.bak
ls 해서 확인해 보면
아까 그 파일은 사라지고 spfileora11g.bak 이라는 우리가 만든 복사본만 남아있는 것이 보인다.
이제 OS에서 exit 해서 SQL+로 간 다음에
SQL> shutdown abort 하고
DB 다시 스타트업시키기
SQL> startup
startup 시켰는데 startup 이 안됨.
왜? 초기 파라미터 파일이 없으니까...
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0.4/db_1/dbs/initora11g.ora'
서버 파라미터 파일을 먼저 찾고
혹시 없다면 init 을 찾아보는데
init도 없으면 오류가 발생한다.
초기 파라미터 파일이 없으면 어떤 일이 벌어지는지 확인했으니
이제 다시 원래대로 돌려놓자...
다시 퍼티 창에서
! 로 OS 로 가고
SQL> !
[oracle@oracle ~]$ cd $ORACLE_HOME/dbs
오라클의 홈 디렉토리로 간 다음
[oracle@oracle dbs]$ ls
hc_ora11g.dat init.ora lkORA11G orapwora11g spfileora11g.bak
디렉토리에 있는 파일들을 보면 아까 그 spfileora11g.bak 이라는 백업본이 보이는데
[oracle@oracle dbs]$ mv spfileora11g.bak spfileora11g.ora
백업본 다시 원래대로 돌려놓기
[oracle@oracle dbs]$ ls
hc_ora11g.dat init.ora lkORA11G orapwora11g spfileora11g.ora
원래대로 바뀌었는지 확인
[oracle@oracle dbs]$ cp spfileora11g.ora spfileora11g_20231208.bak
초기 파라미터 파일 백업본 만들기
(파라미터들을 수정할 때는, 파라미터를 수정하기 전의 파라미터 값과
파라미터를 수정한 후의 파라미터 값을 구분하기 위해
일자 정보를 무조건 써놓아야 한다.)
[oracle@oracle dbs]$ ls
hc_ora11g.dat lkORA11G spfileora11g_20231208.bak
init.ora orapwora11g spfileora11g.ora
확인
[oracle@oracle dbs]$ ls
hc_ora11g.dat init.ora lkORA11G orapwora11g spfileora11g.bak
와중에 orapwora11g 는 패스워드 관리하는 파일,
이건 다음 주에 배우게 된다.
★ 중요!
DBA 는 그날그날 했던 모든 작업들을 기록으로 남겨두어야 한다.
파라미터로 수정한 날짜를 꼭 기록하기!
그다음 단계인
2. mount 단계
3. open 단계
는 3교시에서 배워 보자.
죽어도 안외워지는 내용
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
- nomount 단계에서 다음 단계로 넘어가기 전에 해야 하는 일들이 있는데 그게 뭐냐면
- 1. DB 생성
- 2. control 파일이 깨졌을 경우 : nomount 까지 올려놓고 재생성하는 것
- 3. 백업, 복구 작업
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
2023년 12월 8일 4교시 shutdown 의 여러가지 옵션들 (0) | 2023.12.11 |
---|---|
2023년 12월 8일 3교시 노마운트 단계와 오픈 단계, read only 모드로 DB 열기 (0) | 2023.12.11 |
2023년 12월 8일 1교시 데일리 체크 (0) | 2023.12.11 |
2023년 12월 7일 6교시 (0) | 2023.12.11 |
2023년 12월 7일 5교시 (0) | 2023.12.11 |