Context |
Reference |
Processes |
User process |
Memory structures |
SGA(System Global Area) : |
Physical sturctures(files) |
Database files: |
Parameters |
SHARED_POOL_SIZE |
1. Oracle Database Users
- Logging in directly to the host : host에서 직접 접속...
- Using a two-tiered(Client-server) connection : sql*plus...
- Using a three-tiered connection : tuxedo...
* Session : user가 login해서 logout할때까지의 기간
2. User Process
- SQL*Plus, Server Manager, Developer/2000등의 application을 실행했을때 생성.
- client에서 실행된다.
- UPI(User Program Interface)를 포함한다.
3. Server Process
- user process를 받아서 host에서 처리해서 결과를 client에 return한다..
- user process와 1:1 관계이다.
- PGA(Program Global Area)를 호출한 메모리영역을 사용한다.
- OPI(Oracle Program Interface)를 사용한다.
4. Oracle Instance
* SGA(Sysem Gloval Area)
- Shared pool : library cache & Data Dictionary cashe를 갖고 있다.
- Database buffer : 가장 최근에 처리된 데이터를 저장해놓고 있다.
- Redo log buffer : redo log file에 log를 저장하기전에 어느정도 용량을 buffer에 저장해놓고
처리한다.
* Background Process
- DBWR(Database Writer) : 변경된 데이터를 data file에 쓰는 역할을 한다.
- LGWR(Log Writer) : redo log buffer의 내용을 redo log file에 쓰는 역할을 한다.
- SMON(System Monitor) : instance fail시 instance를 복구하는 역할을 한다.
- PMON(Process Monitor) : 하나의 process가 fail되면 resource를 clean해주는 역할을 한다.
- CKPT(Checkpoint process) : Database 상태 정보를 update하기 위한 응답을 보내준다.
* Oracle Instance는 ORACLE_SID에서 setting한다.
* Oracle Server ─┬─ Instance : Memory(SGA) & Background Process
└─ Database : data files, redo log files, control files
5. Database File
- Data files : 현재의 transaction에 의해서 수정되어지는 data dictionary, user object,
데이터의 before image등을 저장.
- Redo log files : 데이터저장 실패에 대비해서 변경된 레코드를 저장.
- Control files : database를 유지하는데 필요한 정보를 갖고 있다.
6. Other Key Physical Structure
; Database File 이외의 file들
- Parameter file : instance를 구성할때 이 file에 정의된 instance정보를 읽는다.
- Password file : client에서 접속할때의 user정보에 대한 file
- Archived redo log file : redo log file의 backup file
7. Running a Query
Parse --> Execute --> Fetch
1. Parse(구문분석)
i) syntax check
ii) sementics check (Object확인, 권한확인)
iii) 실행계획과 Parsed Tree
2. Execute(실행)
3. Fetch(인출) --> Select only
8. Shared Pool
- parameter file안에 있는 SHARED_POOL_SIZE에서 size가 정의된다.
- Library cache : Text of the statement, Parse Tree, Execution Plan등을 저장하고 있다.
- Data Dictionary cache : table, column definition, username, password, privilege등의
정보가 있는 data dictionary를 가장 최근에 사용한 내용을 저장하고 있다.
9. Database buffer Cache
- DB_BLOCK_BUFFERS parameter에서 buffer의 수를 정의 한다.
- DB_BLOCK_SIZE parameter에서 block 1개의 크기를 정의 한다.
10. Program Global Area(PGA)
- 공유나 쓰기가 되지 않는다.
- Sort area, Session Information, Cursor state, Stack space로 구정되어 있다.
Sort area : 어떠한 sort를 사용할건지에대한 정보.
Session Information : 현재 user session에 대한 정보
Cursor state : 현재 cursor의 상태정보
Stack space : session변수의 영역
11. Running a DML Statement
* UPDATE emp SET sal = sal*1.1 WHERE empno = 7369; 를 실행하면 Parse - Excute의 과정을 거친다.
* Excute Phase
1. buffer cache가 존재하지 않는다면 data file로부터 data와 rollback block을 읽는다.
2. Buffer cache를 읽어서 block으로 복사한다.
3. server process가 데이터에 Lock을 건다.
4. server process가 redo log buffer의 새로운 값과 before-image값을 비교해서 바뀐
부분을 기록한다.
5. 마지막으로 수정 작업을 완료한다.
12. Rollback segment
- transaction이 roll back되었다면 undo한다.
- 읽기 일관성을 위해서...(read consistency)
- fail시 database를 복구하기 위해서...
13. Redo Log Buffer
- LOG_BUFFER에서 size를 정의한다.
- 순환되는 buffer이다.
- 순차적으로 사용된다.
14. DataBase Writer (DBWR)
- buffer가 꽉찾을 때 가장 오래된 buffer의 내용을 지우고 새로운 내용을 기록한다.
- server process가 free buffer를 찾다가 못 찾았을 경우 DBWR이 작동 된다.
- timeout이 발생했을 때 작동된다.
- checkpoint가 발생했을 경우에 작동된다.
15. Log Writer (LGWR)
- log buffer가 1/3 정도 찼을 때...
- timeout이 발생했을 경우 3초마다 기록한다.
- transaction COMMIT이 발생했을 경우.
16. COMMIT Processing
; commit 이 발생하면 아래와 같은 순서로 처리된다.
1) commit한 record들을 log buffer에 기록한다. SCN(System Change Number: Tansaction을 구별할 수
있게하는 번호)이 발생된다.
2) LGWR이 수행된다.
3) commit message를 user에게 보여준다.
4) resource lock이 풀린다.
[ Lab ]
1. 실습환경을 세팅하세요!!!
$ svrmgrl
SVRMGR> connect / as sysdba --> connect internal로 써도 되지만...정석대로 사용하는게 좋다.
SVRMGR> CREATE USER scott
2 IDENTIFIED BY tiger
3 DEFAULT TABLESPACE data01
4 TEMPORARY TABLESPACE temp ;
SVRMGR> ! --> host로 써도 된다.
$ vi scott.sql --> 자신에 맞게 편집한다음...
$ exit
SVRMGR> @ scott.sql --> EMP, DEPT테이블을 만들고 데이터를 insert한다.
-- mino.sql --
SET ECHO OFF |
2. startup, shutdown, connect, disconnect
$ svrmgrl
SVRMGR> connect / as sysdba
SVRMGR> startup
SVRMGR> connect scott/scott
SVRMGR> disconnect
SVRMGR> shutdown
'DATABASE > ORACLE' 카테고리의 다른 글
[Db Admin] 6.Maintaining the Control File (0) | 2012.07.09 |
---|---|
[Db Admin] 5.Data Dictionary Views and Standard Packages (0) | 2012.07.09 |
[Db Admin] 4.Creating a Database (0) | 2012.07.09 |
[Db Admin] 3.Managing an Oracle Instance (0) | 2012.07.09 |
[Db Admin] 2.Using administration Tools (0) | 2012.07.09 |