오라클의 스키마는 설명하기 어려운 추상적임이 있다. 오라클을 공부하던 초반에 아무리 개념이나 관련 글을 찾아봐도 마음에 와닫지 않았고, 그래서 뭐지? 어디에 쓰는거지? 계정과의 차이점은 뭐지? 하는 의문이 들었다. 또한 표준적으로 사용되는 스키마와 개념과 상이하고, DBMS마다 스키마의 개념이 달라 혼동은 가중된다.
하지만 실제 DB를 운영하고 업무를 하며 스키마의 개념을 확실히 알 수 있었다.
오라클의 스키마의 개념을 알아보고, 예제를 통해 계정(USER)과의 차이를 알아보자.
스키마란?
스키마의 정의는 한 계정이 소유하는 테이블, 뷰, 인덱스 등의 오브젝트들의 집합이다.
즉, 아래와 같이 user1 계정에 table1, table2, index1 등의 오브젝트들이 존재할 때 오브젝트들을 user1의 스키마라고 할 수 있다.
users
- user1
objects
- user1.table1
- user1.table2
- user1.index1
...
스키마 단위로 분리하자?
한 오라클 DB 내에서 기능이나 성격 등에 따라 분리가 필요한 경우 '스키마 단위로 분리 하자'는 표현을 쓴다. 이 얘기는 계정을 분리하자는 말과 크게 다르지 않다. 각 분리 영역에 대하여 각각의 계정을 생성하고, 각 계정에 오브젝트를 생성하여 사용하자는 말이다. 그렇다면 스키마와 계정은 같은건가? 하는 의문이 들것이다. DB 구성 예시를 통해 자세히 살펴보자.
예를 들어 한 DB에 서비스 운영DB와 모니터링 솔루션을 스키마로 분리해서 구성한다고 하자.
우선 각각의 오브젝트들(테이블, 인덱스, 프로시져 등)을 저장할 계정을 생성한다.
users
- service
- mont
계정이 생성되었으면 각 계정에 필요한 오브젝트를 생성한다.
users
- service
- mont
objects
- service.delivery
- service.order
- service.member
- mont.table_gather
- mont.daily_gather
...
여기까지만 구성하여도 운영 서비스와 모니터링 솔루션이 스키마로 구분되었다고 말할 수 있다.
그렇다면 계정이랑 스키마가 같은건가? 라고 생각이 들것이다. 계정과 스키마의 차이를 알기 위하여 조금 더 진행해보자.
계정과 스키마의 구분
이제 메인 서비스를 운영하려고 한다. 회사의 구성원들, 개발자, DBA, 그리고 서비스 사용자 등 많은 사용자들이 DB에 접근이 필요하다. 이때 모든 사용자들이 service 계정을 공유하여 사용한다면 사용자들에게 알맞지 않은 권한(예를 들면 데이터 삭제, 데이터 업데이트, 테이블 삭제)이 공유되어 DB 운영에 문제가 발생할것이다. 따라서 아래 예시와 같이 각 사용자들에게 알맞는 권한이 부여된 계정을 추가로 생성하여야 한다.
users
- service (service 스키마에 대한 읽기, 쓰기 권한이 있는 계정 / DBA용)
- service_ro (service 스키마에 대한 읽기 권한만 있는 계정 / 개발자 용)
- service_pgm (service 스키마에 대한 읽기, 쓰기 권한이 있는 계정 / 프로그램 용)
- mont (mont 스키마에 대한 읽기, 쓰기 권한이 있는 계정 / 구성용)
- mont_pgm (mont 스키마에 대한 읽기, DB 내부 뷰에 대한 읽기 권한이 있는 계정 / 솔루션 프로그램 용)
objects
- service.delivery
- service.order
- service.member
- mont.table_gather
- mont.daily_gather
...
이제 해당 DB의 계정과 스키마에 대하여 이렇게 구분하여 말할 수 있다.
스키마 : 운영 서비스와 모니터링 솔루션이 service, mont 스키마로 구분되어있다.
계정 : service, service_ro, service_pgm, mont, mont_pgm 계정이 있다.
'ORACLE > Admin' 카테고리의 다른 글
오라클 Hash Join 원리와 use_hash 힌트 사용법 (0) | 2023.10.18 |
---|---|
ORACLE JOB 등록 및 관리(DBMS_JOB) (0) | 2023.10.13 |
ORACLE Temp file 관리 명령어 정리 (0) | 2023.09.20 |
ORALCE Redo Log 관리 명령어 정리 (0) | 2023.09.20 |
no archive mode 변경 (0) | 2023.09.18 |