반응형
오라클 데이터베이스를 처음 접하면 **USER(사용자)**와 **SCHEMA(스키마)**라는 용어를 자주 접하게 됩니다. 이 두 개념은 데이터베이스를 관리하고 사용하는 데 매우 중요한 요소로, 데이터베이스 구조와 보안의 기본을 이룹니다. 이번 글에서는 USER와 SCHEMA의 개념, 차이점, 주요 용도, 그리고 실무에서의 활용 사례를 상세히 살펴보겠습니다.
1. USER(사용자)란?
USER는 데이터베이스에 접근할 권한을 가진 계정을 의미합니다. 데이터베이스 사용자 계정은 다음과 같은 작업을 수행할 수 있습니다.
- 데이터베이스에 로그인
- 데이터 생성, 수정, 삭제
- 다른 사용자와 데이터 공유
- 특정 권한을 가진 데이터베이스 객체 관리
USER 생성
사용자는 데이터베이스 관리자가 생성합니다. 생성 시 기본적으로 비밀번호와 사용자 이름을 지정합니다.
CREATE USER username IDENTIFIED BY password;
예를 들어:
CREATE USER hr IDENTIFIED BY hr_password;
- 사용자 이름: hr
- 비밀번호: hr_password
2. SCHEMA(스키마)란?
SCHEMA는 특정 사용자가 소유한 데이터베이스 객체 집합입니다. 여기서 객체(Object)란 테이블, 뷰, 인덱스, 프로시저 등을 포함합니다.
즉, USER는 계정이고, SCHEMA는 해당 계정이 소유하는 데이터베이스 구조를 뜻합니다.
SCHEMA 구성 요소
스키마에는 다음과 같은 객체들이 포함됩니다.
- 테이블 (Table): 데이터를 저장하는 기본 객체
- 뷰 (View): 테이블 데이터를 조합해 가상적으로 표현
- 인덱스 (Index): 데이터 검색 성능 향상
- 프로시저 및 함수 (Procedure/Function): 특정 작업을 자동으로 수행하는 프로그램
- 패키지 (Package): 관련 프로시저와 함수를 그룹화한 객체
- 트리거 (Trigger): 특정 이벤트 발생 시 실행되는 프로그램
3. USER와 SCHEMA의 관계
USER와 SCHEMA는 서로 밀접하게 연결되어 있습니다.
- USER는 SCHEMA를 소유합니다.
- SCHEMA는 USER가 생성한 데이터베이스 객체의 집합입니다.
- USER 계정을 만들면 자동으로 동일한 이름의 SCHEMA가 생성됩니다.
관계 예시
CREATE USER finance IDENTIFIED BY fin_pass;
- finance라는 사용자 계정을 생성하면, 같은 이름의 스키마가 자동으로 만들어집니다.
- finance 사용자가 생성하는 모든 테이블과 객체는 finance 스키마에 저장됩니다.
4. 주요 작업 및 사용법
1) USER 관리
사용자 생성
CREATE USER hr IDENTIFIED BY hr_password;
사용자 권한 부여
GRANT CONNECT, RESOURCE TO hr;
- CONNECT: 데이터베이스에 로그인할 수 있는 권한
- RESOURCE: 테이블, 뷰 등을 생성할 수 있는 권한
사용자 삭제
DROP USER hr CASCADE;
- CASCADE: 사용자가 소유한 모든 스키마 객체를 함께 삭제합니다.
2) SCHEMA 접근
스키마 내 객체 참조
SELECT * FROM hr.employees;
- hr: 스키마 이름
- employees: 테이블 이름
- 다른 스키마의 객체에 접근하려면 반드시 스키마 이름을 명시해야 합니다.
디폴트 스키마 설정
ALTER SESSION SET CURRENT_SCHEMA = hr;
- 현재 세션의 기본 스키마를 hr로 설정합니다. 이후에는 스키마 이름을 생략해도 됩니다.
5. USER와 SCHEMA의 주요 차이점
구분 USER(사용자) SCHEMA(스키마)
역할 | 데이터베이스에 접근할 계정 | 계정이 소유한 데이터베이스 객체의 집합 |
생성 시점 | 데이터베이스 관리자가 명시적으로 생성 | 사용자 계정 생성 시 자동으로 생성 |
포함 내용 | 비밀번호, 권한 등 | 테이블, 뷰, 인덱스 등 데이터베이스 객체 |
예시 | hr 계정 | hr 계정의 테이블, 뷰 등 |
6. 실무 활용 사례
사례 1: 부서별 데이터 분리
- 요구 사항: 부서별로 데이터를 관리하고 접근을 제한해야 합니다.
- 해결 방법: 부서별 USER 및 SCHEMA를 생성하고 권한을 관리합니다.
CREATE USER sales IDENTIFIED BY sales_pass;
GRANT CONNECT, RESOURCE TO sales;
CREATE USER hr IDENTIFIED BY hr_pass;
GRANT CONNECT, RESOURCE TO hr;
- 각 부서 사용자 계정이 고유한 스키마를 소유하게 됩니다.
사례 2: 데이터 공유
- 요구 사항: 한 사용자가 다른 사용자의 스키마에서 테이블에 접근해야 합니다.
- 해결 방법: 필요한 객체에 SELECT 권한을 부여합니다.
GRANT SELECT ON hr.employees TO sales;
- sales 사용자가 hr 스키마의 employees 테이블을 읽을 수 있도록 설정합니다.
사례 3: 백업 및 복구
- 요구 사항: 특정 스키마의 데이터를 백업하거나 복구해야 합니다.
- 해결 방법: 스키마 수준에서 데이터 덤프(Export)와 복구(Import)를 수행합니다.
expdp hr/hr_password schemas=hr directory=DATA_PUMP_DIR dumpfile=hr_backup.dmp logfile=hr_backup.log
impdp hr/hr_password schemas=hr directory=DATA_PUMP_DIR dumpfile=hr_backup.dmp logfile=hr_restore.log
- 위 명령은 hr 스키마의 모든 데이터를 백업하고 복구합니다.
7. USER와 SCHEMA 관리 시 주의사항
- 권한 관리:
- 최소 권한 원칙을 적용하여 사용자 계정에 불필요한 권한을 부여하지 않습니다.
- 스키마 분리:
- 서로 다른 사용자 계정은 독립적인 스키마를 가지므로, 데이터 간섭을 방지할 수 있습니다.
- 데이터 보안:
- 중요한 데이터가 포함된 스키마는 반드시 암호화와 접근 제어를 적용해야 합니다.
- 정기 점검:
- 사용하지 않는 USER 계정은 삭제하거나 비활성화해 보안을 강화합니다.
8. 마무리
USER와 SCHEMA는 오라클 데이터베이스 구조의 핵심 요소로, 데이터 접근과 관리의 기본 틀을 제공합니다. USER는 계정과 권한의 개념이고, SCHEMA는 데이터베이스 객체의 논리적 집합입니다.
데이터 보안과 조직적 관리가 중요한 현대 데이터베이스 환경에서 USER와 SCHEMA를 적절히 활용하면 데이터 관리를 더욱 체계적으로 수행할 수 있습니다.
반응형
'Database' 카테고리의 다른 글
오라클 ROLLBACK SEGMENT의 역할과 설정 (0) | 2024.12.03 |
---|---|
오라클 데이터베이스 권한 관리: GRANT와 REVOKE의 활용 (0) | 2024.12.03 |
오라클 TRIGGER를 활용한 데이터 무결성 유지 (0) | 2024.12.03 |
오라클 PL/SQL과 SQL의 차이점 이해하기 (0) | 2024.12.03 |
오라클 패키지와 함수로 SQL 확장하기 (0) | 2024.12.03 |