<SQL Processing>
- Query (SELECT)
- 1. Parse(구문분석) -> SQL을 기계어로 변환
- 문법검사
- 의미검사
- Object Resolution : Recursive Call(재귀호출) -> Data Dictionary(Share Pool에 있다)에 전달
- 많이발생하면 성능이 저하된다.
- 대소문자구분(SELECT,Select,select는 모두 다르다)
- 공백, 들여쓰기
- Literal SQL
- Previlege Validation : Table에 대한 권한 권사는 Data Dictionary에서 한다.
- 결과 : SQL문장이 저장, 실행계획(Execute Plan), Parse Tree -> Library Cache 저장
- 2. Execute(실행) -> Data Buffer Cache에 가서 올라온 Block 정보가 있는지 검사!
- Cache Hit : 있다!
- Cache Miss : 없다!
- Disk의 해당 File에가서 해당 Block을 복사한다. 그후 Data Buffer Cache에 가져 온다.
- 3. Fetch(인출.전달) -> Server Process -> User Process -> User Process가 표시해준다
-
- 주변 Rows(Data)에 Acess 가능성이 높기 때문에 Block 단위로 I/O가 일어난다
<DML Process>
- Update를 하면 Buffer Cache에 가서 해당 Table 정보를 Search를 한다.
- 있다면 -> Update Immediately
- 없다면 -> Disk File -> Block 을 복사하고 Buffer Cache에 저장한다.
- Update 블락은 옆에 Undo Block(Rollback) 을 더 붙여서 온다
- 해당 Row에 대한 Rock을 설정을 먼저 한다(같은 Row에 다른 컬럼은 변경이
- 변경된 정보를 Redo Log Buffer에 저장한다.
- 기존 Data를 Rollback Block으로 이동시키고, 그위치에 새로운 Data가 들어온다.
- 메모리에만 기록되고 아직 확실히 변경이 되지 않은상태(Dirty Block), DB Wirter가 써줄때까지 기다린다.
- 언제?
- Commit을 하면 Redo Entry가 Log Writer가 기록한다. Data Buffer Cache에 있는 것이 기록 되는 것이 아니다!
- Oracle Process
- Mandatory(필수 프로세서)
- (Checkpointer) CKPT :
- Data File Header와 Control 파일을 Update한다! (SYNC) 동기화라고 한다
- CKPT가 발생하면 컨트롤 파일의 정보갱신
- 로그스위치 발생시에 데이터파일의 헤더값 갱신
- (System Monitor) SMON : 실패후에, Cache Recovery,Transcation Recovery를 수행한다. (복구작업)
- Commit된 정보와, Commit되지 않은 정보 모두 가지고 있다. 그래서 정전시에도 복구가능!
- (Process Moniter) PMON : 세션의 비정상 종료를 정리해준다!
- 비정상적으로 종료된 세션의 정리(Rollback), (Rock 해제),(Resource)해제 등을 해준다
- (Database Writer) DBWn : Dirty Block 애들을 위주로 DBW가 Data에 기록한다.
- (LogWriter) LGWR : Redo Log Buffer에 작업내역(Redo Entry),
- 끊임없이 작업하기 때문에 연속적프로세서라 한다.
- SGA의 Redo Log buffer에 생겨나며 작업이 완료되었을 때 Log File에 기록
- Archive (ARCn) : Optional Process
- 총 30개가 있다 (0~29개)
- Log Swtich가 발생해서 Redo Log가 손상되지 않게 ARC가 들어와서 Archive 파일로 만들어준다! 100% 완전복구!
- http://cafe.naver.com/ocmkorea/197 -> 언제에 대한 정보
- Buffers
- Pinned : 자기가 쓰는 Block에 Memory Rock이 걸려서 다른 사용자는 사용하지 못한다
- Clean : age out(오래된건 나가라!)
- Free or unused : 이제막 시작된상태가 unused, Free는 Dirty가 쓰여진 다음.
- Dirty : Check Point Queue에 저장한다. Free 공간을 확보하기 위해서 Dirty를 기록한다 누가? DBW가!
- LRU 알고리즘 : 가장 오래동안 사용되지 않은것을 Database Buffer Cache에서 지운다.
- LRU의 반대는 MRU(Most Recently Used)
- 이게바로 Age Out이다!
- Index Scan은 MRU쪽으로
- Full Tabe Scan은 LRU쪽으로 보낸다.
- Physical Database Structure
- Control File
- 최신의 물리적 저장정보를 담고있다
- Check Point가 갱신될때마다!
- *.ctl 파일 확장자
- Mount의 책임을 갖고 있다(동기화)
- 무결성을 체크하기 위해서!
- 정보조회
- Data File
- *.dbf
- Data 저장소
- Table..Index..Sequence... etc
- Open시에 Control File의 동기화를 거쳐 Open..
- 정보조회
- v$datafile
- dba_data_files
- Online redo log file
- *.log, *.redo
- 복구정보를 보관한다
- SMON이 주로 애용한다.
- 정보조회
- Parameter File
- Parameter 정보를 갖고있다
- nomount할때!
- 정보조회
- Backup File
- Backup 정보를 담고있다
- FRA에 저장된다.
- Password File
- Sysdba들의 Password를 저장
- Remote Connection Authentication
- ALert and Trace log files
- Alert_orca.log
- Server Process가 감지한 Log 정보
- SYSTEM and SYSAUX Tablespaces
- mandatory tablespace, DB생성시 필수!
- Always Online
- AWR : 1시간마다 Snapshot을 찍어서 저장한다. 이것을 SYSAUX에 저장한다
- Segments
- Segment(Tablespace 바로 밑)
- Extents(확장영역)으로 되어있다(Data File로부터 할당)
- Data Blocks(I/O의 최소단위) -> rows 들이 여기 저장되어 있다!
- Data Block과 Disk Block은 Data Block(Oracle)이 Disk Block(OS) 쪽을 따라간다!
- Schema : 객체의 모음 (Objects Containts)
카페 게시글
오라클 강좌[인서]
Oracle Processer
인서
추천 0
조회 209
08.04.16 19:20
댓글 0
다음검색