Oracle을 먼저 하다가 DB2를 하게 될 경우, 용어의 차이로 개념을 잡지 못하고 헤매는 경우가 많다. 그중에서 가장 헷갈리게 하는 용어가 아마 Instance와 Database의 개념이 아닐까 싶다.
Oracle에서는 Instance와 Database를 다음과 같이 정의한다.
instance란?
- Background Process와 SGA 메모리 영역을 일컫는다. 따라서 Instance를 시작하게 되면 SGA영역을 할당하고 Background Process를 구동시키게 된다.
Database란?
- 데이터베이스를 저장하는 물리적은 영역이라고 할 수 있다. dbf 파일, control 파일, log 파일 등 데이터를 저장되어 있는 물리적 공간이라고 생각하면 된다.
따라서, Database의 내용을 Instance위에 올려놓고 Transaction을 처리하고, 변경된 데이터를 다시 Database에 기록하는 방식으로 동작한다.
반면에, DB2에서는 다음과 같이 정의를 한다.
instance란?
- DB2에서 instance는 Database를 관리하는 Manager라고 생각하면 이해가 쉽다. Database를 구동하기 전에 시작해야 하며, Instance도 구동시 메모리와 Background Process를 가지게 된다.
Database란?
- Background Process, 메모리 (오라클 기준으로 SGA), 그리고 물리적인 저장 공간인 데이터 파일로 구성이 된다.
DB2에서 얘기하는 Database는 Oracle의 Instance와 Database를 포함하는 개념이라고 볼 수 있다. Oracle과 동작 방식은 비슷하지만 용어의 차이로 다르게 느껴질 뿐이다.