개념
데이터 딕셔너리는 데이터베이스의 가장 중요한 부분 중의 하나인 데이터베이스와 관련된 정보를 제공한다. 데이터 딕셔너리의 내용은 DDL 혹은 DML이 수행될 때 오라클 서버에 의해 변경된다. 소유자는 SYS이며 오라클 서버에 의해 유지되므로 사용자는 데이터 딕셔너리의 내용을 변경할 수 없다. 단지 일반 사용자는 SELECT 명령으로 데이터 딕셔너리의 내용을 조회만 할 수 있다.
데이터 딕셔너리는 기본 테이블과 딕셔녀리 뷰의 두 가지 형태로 제공한다. 기본 테이블은 데이터베이스에 관한 정보를 갖고 있는 테이블로서 오라클 서버만 기록할 수 있고 데이터가 은폐되어 있으므로 사용자가 직접 접근할 수 없다.
데이터 딕셔너리 뷰는 기본 테이블의 정보를 더 유용하게 보여주기 위해서 기본 테이블을 요약한 형태이다. (뷰란 기본 테이블의 내용을 보여주는 하나의 방식으로, 사용자는 뷰를 마치 테이블처럼 사용할 수 있다. 엄밀히 따지자면 여기서 말하는 데이터 딕셔너리도 데이터 딕셔너리 뷰이다.)
데이터 딕셔너리의 내용은 데이터베이스 안의 모든 객체에 대한 정의로서 객체들에 할당된 공간과 사용된 공간, 무결성 제약 조건, 사용자 정보, 사용자에게 부여된 권한과 역할 (ROLE) 정보, 감사 정보 등 다양한 정보를 알려준다.
데이터 딕셔너리는 접두어에 따라 다음과 같이 세 종류로 나뉜다.
- ALL_XXXX 데이터 딕셔너리를 사용하기 위해 다른 계정에 권한을 주는법 예시
A 로 접속후
grant select on Table1 to B;
grant select on Table2 to B;
grant select on Table3 to B;
그런 후
B 로 접속후
select * from A.Table1;
select * from A.Table2;
select * from A.Table3; 과 같이 부여 받은 권한에 한해서 다른 계정의 테이블에 접근, 혹은 수정이 가능하다.
예시
1. USER 데이터 딕셔너리 - 자신의 계정이 소유한 객체 등에 관한 정보를 조회할 수 있다.
( 일부만 알아본다. USER 데이터 딕셔너리에 대해서는 제약조건과 관련하여 따로 포스팅 함.)
자신이 생성한 테이블, 인덱스, 뷰 등과 같은 자신의 계정이 소유한 객체의 정보를 저장하는 USER_TABLES 데이터 딕셔너리
--> DESC USER_TABLES
현재 유저가 생성한 테이블 목록 보기 (USER_TABLES 데이터딕셔너리(일종의 테이블개념)안의 TABLE_NAME 칼럼명을 사용한다.)
--> SELECT TABLE_NAME
FROM USER_TABLES
ORDER BY TABLE_NAME DESC;
--> SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE='TABLE'; (좀더 상세하게 보여줌)
(SELECT * FROM TAB; 과 비교해보기)
ALL 데이터 딕셔너리
- 자신 계정 소유 또는 권한을 부여 받은 객체 등에 관한 정보를 조회할 수 있다.
- 타 계정의 객체는 원천적으로 접근이 불가능하지만, 그 객체의 소유자가 접근할 수 있도록 권한을 부여하면 타 게정의 객체도 접근이 가능하다.
- DESC 명령어로 데이터 딕셔너리 뷰 ALL_TABLES의 구조를 확인할 수 있다
DESC ALL_TABLES;
OWNER, TABLE_NAME 컬럼값의 내용을 확인할 수 있다.
SELECT OWNER, TABLE_NAME FROM ALL_TABLES;
DBA 데이터 딕셔너리 - 데이터베이스 관리자만 접근 가능한 객체 등의 정보를 조회할 수 있다
DBA는 모두 접근 가능하므로, 결국 DB에 있는 모든 객체에 관한 조회를 한다.
DBA_TABLES 데이터 딕셔너리 뷰의 내용을 조회할 수 있다.
SELECT OWNER, TABLE_NAME FROM DBA_TABLES;
오류가 나는 이유는 현재 접속한 사용자가 SCOTT이므로, DBA_로 시작하는 데이터 딕셔너리 뷰를 사용할 권한이 없어서이다 DBA 권한을 가진 SYSTEM 계정으로 접속하면 DBA_TABLES 데이터 딕셔너리 뷰의 내용을 조회할 수 있고 테이블이 꽤 많이 나온다.
'CS > 데이터베이스' 카테고리의 다른 글
NOSQL (개념, 특징, 장단점, RDBMS와의 차이점, 모델, 종류) (0) | 2024.08.27 |
---|---|
데이터 웨어하우스(DW)란? (0) | 2024.08.16 |
데이터 모델링의 이해 (0) | 2024.08.15 |
데이터 테이블의 종류 및 특성 (0) | 2024.08.11 |
함수적 종속 (Functional Dependency) (0) | 2024.07.25 |