Architecture 개요 

 

SGA

SGA(System Global Area)란?

- 공유메모리 

- 여러개의 process들이 공유하는 메모리 영역 

 - 여러개의 process란? 

   - client 가 붙으면 server process 가 생성되고 , server process는 SGA 영역을 많이 참조한다 

   - server process는 자신만의 memory 공간도 있다 PGA(Program Global Area)

SGA 영역 종류

- Shared Pool 

  - 주로 sql에 관한 내용 (sql plan)

  - Data Dictionary Cache

- Database Buffer Cache 

  - Storage 영역에 있는 데이터를 읽을 때 , Buffer cache에 올려놓는다 . (한번 읽은 데이터는 다시 읽을 수 있기에 ) 

- Redo Log Buffer

  - DML 데이터 수정을 할때마다 -> 정합성이 변경되는것이다 . 

  - ex) 고객명 바꿈 (김땡떙 -> 이땡)

  - 들어올때 마다 storage io 를 발생 시키면 성능 하락 

  - 그래서 , 변경이 되는 부분은 memory에 모아두았다가 한번에 내린다 .

- Large Pool

  - 이 외의, SGA에서 큰 object들을 모아둘때 

  -  ex) java pool , parallel query 사용시 

 

Background Process

DBMS가 안정적이게 돌아갈 수 있도록, 여러가지 작업을 진행한다 

- smon, pmon 

- DBWR 

 - buffer cache 내용을 안전하게 datafile로 내림 

- LGWR

 - Redo Log를 storage로 내릴경우 

- CKPT 

  - cheack

- ARCH

  - archive log 관리 하는 process

 

 

 

Oracle Connection & Server Peocess 

 

 

client는 외부서버에서 접속한다

 

client 들은 connection driver를 통해서 DB에 접속을 한다 

그 중 OCI driver은 oracle 에서 만듬었고 코드가 많아 무거움 경향이 있다  

 

명령 수행 시 flow 

JDBC diver로 접속했다는 예를 들면,

1. getConnection 시점에서 user process가 생성된다 

2. listener 를 호출하여 connection 생성을 요청한다 

3. listener는 해당 포트(def : 1521)로 접속하여 DB서버에 server process를 생성시킨다  

4. 명령어 수행시 (JDBC 코드에서 createStatement , ExecuteQuery 를 실행) server process는 SGA영역에 있는 데이터라면 SGA 접근하여 user process 에게 전달함 

 4-1. hash join이나 sorting을 할떄 PGA- server process의 공유 메모리 영역을 사용한다