데이터 딕셔너리와 데이터베이스 사용자 구성
데이터 딕셔너리는 데이터베이스의 메타데이터 정보를 담고 있는 테이블 및 뷰의 집합이며, 데이터베이스 사용자는 DBA, 응용 프로그래머, 최종 사용자로 구성되어 각각 다른 역할과 책임을 가진다.
데이터 딕셔너리(Data Dictionary)의 개념
데이터 딕셔너리는 데이터베이스의 가장 중요한 부분 중 하나로, 데이터베이스와 관련된 모든 메타데이터 정보를 제공하는 테이블 및 뷰들의 집합이다. 대부분 읽기 전용으로 제공되며 데이터베이스 전반에 대한 정보를 담고 있다.
데이터 딕셔너리의 특징
- 데이터베이스 명령이 실행될 때마다 데이터 딕셔너리를 접근한다
- DDL이나 DML이 수행될 때 오라클 서버에 의해 자동으로 변경된다
- 소유자는 SYS이며 오라클 서버에 의해 유지된다
- 일반 사용자는 SELECT 명령으로만 내용을 조회할 수 있다
- SYSTEM 테이블스페이스에 저장된다
데이터 딕셔너리는 데이터베이스 자원을 효율적으로 관리하기 위한 다양한 정보를 저장하는 시스템 테이블로, 사용자가 직접 수정할 수 없다.
데이터 딕셔너리의 내용
데이터 딕셔너리는 다음과 같은 다양한 정보를 포함한다:
-
데이터베이스 안의 모든 객체에 대한 정의
- 테이블, 뷰, 인덱스, 시퀀스, 프로시저 등의 정보
-
객체들에 할당된 공간과 사용된 공간
- 테이블스페이스, 세그먼트, 익스텐트 등의 저장 정보
-
무결성 제약조건
- 기본키, 외래키, 유니크 제약조건 등
-
사용자 정보
- 계정, 프로필, 권한 등의 사용자 관련 정보
-
사용자에게 부여된 권한과 롤 정보
- 시스템 권한, 객체 권한, 역할(Role) 정보
-
감사 정보
- 데이터베이스 작업에 대한 감사 기록
💡 데이터 딕셔너리는 기본 테이블과 딕셔너리 뷰의 두 가지 형태로 제공된다. 기본 테이블은 직접 접근할 수 없고, 딕셔너리 뷰를 통해 정보를 조회한다.
데이터 딕셔너리 뷰의 종류
데이터 딕셔너리 뷰는 접두어에 따라 세 가지 종류로 구분된다:
DBA_XXX 뷰
-
특징: 데이터베이스의 모든 객체에 대한 정보를 보여준다
-
접근 권한: DBA 권한을 가진 사용자만 접근 가능
-
예외: SELECT ANY TABLE 권한을 가진 사용자도 접근 가능
-
사용 예:
SELECT OWNER, TABLE_NAME FROM DBA_TABLES;
ALL_XXX 뷰
-
특징: 사용자가 소유하고 있거나 권한을 부여받아 접근할 수 있는 객체에 대한 정보를 보여준다
-
접근 권한: 모든 사용자가 접근 가능(권한이 있는 객체에 한함)
-
사용 예:
SELECT OWNER, TABLE_NAME FROM ALL_TABLES;
USER_XXX 뷰
-
특징: 사용자가 소유한 객체에 대한 정보만 보여준다
-
접근 권한: 모든 사용자가 접근 가능(자신의 객체에 한함)
-
사용 예:
SELECT TABLE_NAME FROM USER_TABLES;
데이터 딕셔너리 뷰는 사용자의 권한 수준에 따라 접근할 수 있는 정보가 달라지며, 각 뷰는 특정 목적에 맞게 설계되어 있다.
데이터베이스 사용자 구성
데이터베이스 시스템에는 다양한 역할을 수행하는 여러 유형의 사용자가 있다. 각 사용자는 고유한 책임과 권한을 가지고 있다.
데이터베이스 관리자(DBA: Database Administrator)
DBA는 데이터베이스 시스템을 운영하고 관리하는 핵심 역할을 담당한다.
DBA의 주요 업무:
- 스키마 정의: 데이터베이스의 구조를 설계하고 정의
- 무결성 유지: 데이터의 정확성과 일관성을 보장하기 위한 제약조건 설정
- 보안 권한 관리: 사용자 계정 생성 및 권한 부여/취소
- 예방 및 회복 절차 수립: 백업 및 복구 전략 개발
- 저장 구조와 접근 방법 선정: 효율적인 데이터 저장 및 접근 방법 결정
- 데이터베이스 구성요소 설정: 테이블스페이스, 버퍼 풀 등의 설정
⚡ DBA는 데이터 정의어(DDL)와 데이터 제어어(DCL)를 주로 사용하며, 데이터베이스 시스템의 전반적인 성능과 보안을 책임진다.
응용 프로그래머(Application Programmer)
응용 프로그래머는 최종 사용자의 요구에 맞는 애플리케이션을 개발하는 역할을 담당한다.
응용 프로그래머의 주요 업무:
- 데이터베이스를 실제적으로 설계
- 최종 사용자들의 요구에 맞는 인터페이스 개발
- 데이터베이스 접근 응용 프로그램 개발
- 고급 프로그래밍 언어(C, Java 등)와 내포된 데이터 조작어를 사용하여 개발
- 기작성 트랜잭션(canned transaction) 프로그래밍
💡 응용 프로그래머는 주로 데이터 조작어(DML)를 사용하며, 사용자 친화적인 인터페이스를 통해 데이터베이스 기능을 제공한다.
최종 사용자(End User)
최종 사용자는 데이터베이스를 실제로 사용하는 사람들이다.
최종 사용자의 특징:
- 데이터베이스에 저장된 정보를 조회, 갱신, 삭제하는 작업 수행
- 응용 프로그래머가 개발한 응용 프로그램을 사용
- 데이터베이스 질의어를 직접 사용하거나 응용 프로그램을 통해 간접적으로 사용
- 캐주얼 사용자(매번 다른 정보를 찾는 사용자)와 초보 사용자(기작성 트랜잭션을 반복 사용하는 사용자)로 구분
데이터베이스 사용자는 각자의 역할에 따라 서로 다른 권한과 책임을 가지며, 이들의 협력을 통해 효율적인 데이터베이스 시스템이 운영된다.
데이터 딕셔너리와 사용자 구성의 관계
데이터 딕셔너리는 데이터베이스 사용자 구성과 밀접한 관련이 있다. 각 사용자 유형은 데이터 딕셔너리를 다른 방식으로 활용한다.
DBA와 데이터 딕셔너리
- DBA는 DBA_XXX 뷰를 통해 데이터베이스의 모든 객체와 사용자 정보에 접근할 수 있다
- 시스템 성능 모니터링, 보안 관리, 리소스 할당 등의 작업에 데이터 딕셔너리 정보를 활용한다
- 데이터 딕셔너리를 통해 데이터베이스의 전반적인 상태를 파악하고 관리한다
응용 프로그래머와 데이터 딕셔너리
- ALL_XXX 또는 USER_XXX 뷰를 통해 자신이 접근할 수 있는 객체 정보를 확인한다
- 애플리케이션 개발 시 테이블 구조, 제약조건, 인덱스 등의 정보를 참조한다
- 데이터 딕셔너리 정보를 기반으로 효율적인 쿼리와 애플리케이션을 설계한다
최종 사용자와 데이터 딕셔너리
- 주로 USER_XXX 뷰를 통해 자신이 소유한 객체 정보에 접근한다
- 데이터 조회나 업데이트를 위한 기본 정보로 데이터 딕셔너리를 활용한다
- 일반적으로 응용 프로그램을 통해 간접적으로 데이터베이스에 접근하므로 데이터 딕셔너리를 직접 조회하는 경우는 적다
데이터 딕셔너리는 데이터베이스의 메타데이터를 체계적으로 관리하는 핵심 요소이며, 다양한 사용자 그룹이 각자의 역할에 맞게 데이터베이스를 효율적으로 활용할 수 있도록 지원한다. 이를 통해 데이터베이스 시스템의 안정성, 보안성, 효율성이 유지된다.
댓글남기기