Oracle DB구조1 : Database
오라클 데이터베이스 구조
- 오라클DB는 크게 인스턴스(SGA 메모리구조와 백그라운드 프로세스와 데이터베이스로 나뉜다.
- 인스턴스: 메모리 안에 만들어진다. 오라클 시스템의 논리적인 구조(로지컬 스트럭쳐)
- 데이터베이스: 하드드라이브 안에 만들어 진다. 오라클 시스템의 물리적인 구조이다.(피지컬스트럭쳐). 실제 오라클에 관련된 정보를 담고있는 파일을 칭함.
- 인스턴스와 데이터베이스는 동적으로 연결되어 있다.
- 필수파일들이 망가지는 경우 DB가 아예 작동하지 않는다. -> 백업, 복구작업진행해야함.
Database 5가지 필수물리적파일
datafiles
- 실제 data가 저장되는 공간 => 따라서 관리를 잘해야한다.
- data dictionary가 저장되는 공간
- datafile 정보 조회 :
v$datafile
,v$tempfile
- v$datafile : 영구데이터
- v$tempfile : 임시데이터, DB를 끌때 같이 날라감.
v$datafile
,v$tempfile
라이브러리를 사용하여 정보조회가 가능하다.
1 | // v$datafile : 영구데이터 |
Control file
- 데이터베이스의 무결성을 유지 관리할 수 있는 DB의 모든 동기화정보가 기록된 공간
- DB의 논리적/물리적 구조 정보, 마지막 작업번호 등이 저장되어있음
- DB당 하나만 존재하면 됨.
- 컨트롤파일이 날라갔다 = DB가 날라갔다, 컨트롤파일이 과거로 되돌아가는 것 = DB가 과거로 되돌아 가는 것
- 이렇듯 너무나 중요한 Control file은 백업으로는 역부족하여 데이터손실이 날 수 있으므로 Control file다중화를 통해서 동시 운영하는 것을 권장.
- Control file다중화
- 최대8개까지 다중화기능제공되고 오라클 3개권장
- 다중화가 많을 수록 안정성, 성능↓ (3개든5개든 다중화 갯수만큼 동시에 기록해야해서 성능떨어짐)
- 다중화가 적을 수록 안정성↓, 성능
- 다중화시킬때는 경로를 나눠서 운영해야함. 예를 들어 c드라이브와 d드라이브에 하나씩.
- Control file 정보조회 : v$controlfile
1 | //컨트롤파일 정보 조회 |
- 조회결과를 보면
.ctl
컨트롤 파일이 2개이다. 따라서 다중화 개수도 2개이다.
(online) Redo log files
- DB에서발생된 변경 작업의 로그정보(Redo data)가 기록된 공간
- DB에서발생된 변경 작업이란 DML 후 COMMIT, 오토커밋까지 한 작업
- 이미 변경작업이 완료된 정보를 왜 로그 남길까? 주목적 : Datafile recovery(복구)
- DB당 최소 2개이상존재해야함
- 순환형으로 관리되는 파일 -> 순환하면서 로그를 덮어쓴다.
- 다중화기능 제공. 다중화 개수 제한 없음. 다중화가 많을 수록 안정성, 성능↓
- 기본 구조:
- Redo log Group(논리적 구조) : DB당 Redo log Group이 2개이상 존재해야함
- Redo log Member(물리적 구조, 실질적인 file) : Redo log Group당 1개이상 존재해야함
- 오라클 권장사항 : Group 3개, Member 2개씩
- Redolog files 정보조회 : v$log, v$logfile
1 | //v$log 조회 |
- 조회결과를 보면 group은 3개와 각 group별 멤버 2개씩 있는 것을 확인 가능
- current로 현재 사용중인 로그파일을 확인 가능
1 | //v$logfile조회 |
Parameter file
- Instance의 정의정보(SGA할당정보, B/G proc정보 등)이 기록된 공간
- DB의 여러 설정 정보가 기록된 공간
- DB의 켜졌는지 유무는 instance를 보고 말함 -> 인스턴스가 없으면 DB가 꺼져있는 것
- 위치 : $ORACLE_HOME/dbs
- 어느 기업의 DB든간에 위치가 정해져있다.
- 이름 : spfileSID.ora 또는 initSID.ora
- SID에는 DB명이 들어감. DB명은 DBA가 DB생성할 때 정함.
- 파일을 절대 일반적인 편집기로 열면 안됨. 바로 파일이 망가짐
- 파일을 열고 싶으면 오라클에게 따로 보여달라는 명령어를 내려야함. 추후 학습예정.
1 | //존재하는 지만 체크. 절대 열면 안됨. |
spfileorcl.ora
파일이 존재하는 것을 확인할 수 있다.
Password file
- DB를 시작/종료할 수 있도록 인증해주는 공간.
- 위치 : $ORACLE_HOME/dbs
- 어느 기업의 DB든간에 위치가 정해져있다.
- 이름 : orapwSID
- SID에는 DB명이 들어감. DB명은 DBA가 DB생성할 때 정함.
1 | //존재하는 지 체크 `orapworcl` |
Archived log files (option)
- 수많은 옵션 데이터 베이스 중에서 알아둬야할 물리적파일이다.
- Redo log file의 오프라인 복사본이라고 생각하면 된다.
- 주목적 : Datafile Recovery
- log mode : Narchive log mode VS Archive log mode(권장) 중 선택
- log mode 정보 조회 : v$database 안의 log_mode
1 | SQL> desc v$database //구조를 조회해서 필요한 컬럼만 출력한다. |