티스토리 뷰
Oracle 데이터 베이스를 관리하고 운영하기 위한 사용자 계정들이 필요합니다. 데이터베이스 설치 후 기본으로 제공되는 주요 사용자(sys, system)의 역할과 권한을 명확히 이해하는것은 DBA 업무의 기초입니다. 각 사용자의 특징과 권한 범위, 실무에서의 활용 방식을 상세히 살펴보겠습니다.
1. Oracle DB 사용자 권한 체계
1.1 권한의 분류
Oracle 에서 사용자에게 부여되는 권한은 두 가지 종류로 나뉩니다.
시스템 권한(System Privilege): 데이터베이스 전체에 영향을 미치는 작업을 수행할 수 있는 권한입니다. 예를 들어 사용자 생성, 테이블스페이스 관리, 데이터베이스 시작/종료 등이 있습니다.
객체 권한(Object Privilege): 특정 객체(테이블, 뷰, 시퀀스 등)에 대한 SELECT, INSERT, UPDATE, DELETE 등의 작업을 수행할 수 있는 권한입니다.
1.2 역할(Role)의 개념
Oracle 은 권한을 직접 사용자에게 부여하는 것 외에도 역할(Role) 을 통해 권한을 관리합니다. 역할은 권한들의 집합으로, 여러 사용자에게 동일한 권한을 효율적으로 부여할 수 있게 해줍니다. 가장 대표적인 역할이 바로 DBA 역할입니다.
2. SYS 계정: 데이터베이스의 최상위 관리자
2.1 SYS계정의 특징
SYS 계정은 Oracle 데이터베이스의 최고 관리자 계정입니다. 이 계정으로만 수행할 수 있는 작업들이 있으며, 데이터베이스의 안정성과 보안에 직결되는 중요한 역할을 합니다.
2.2 SYS 계정의 권한 범위
SYS 계정은 SYSDBA 권한을 가지고 있습니다. 이는 다음의 권한들을 포함합니다.
- DBA 권한 : 일반적인 데이터베이스 관리 작업 수행 (사용자 생성/삭제, 테이블스페이스 관리, 인덱스 생성 등)
- 데이터 베이스 생성 : 새로운 데이터베이스를 생성할 수 있음
- 데이터베이스 시작/종료 : 데이터베이스 인스턴스를 시작하거나 종료할 수 있음
- 시스템 권한 부여/회수: 다른 사용자에게 권한을 부여하거나 회수할 수 있음
2.3 SYS 계정 접속 및 활용
SYS 계정으로 접속할 때는 특별한 방식이 필요합니다.
-- SQL*Plus에서 SYS로 접속하는 방법
sqlplus / as sysdba
-- 또는
sqlplus sys/설정된 비밀번호 as sysdba
2.4 SYS 계정의 주요 작업 예시
-- 데이터베이스 시작
STARTUP;
-- 데이터 베이스 종료
SHUTDOWN IMMEDIATE;
-- 새로운 테이블스페이스 생성
CREATE TABLESPACE TS_DATA
DATAFILE '/u01/oradata/TS_DATA.dbf' SIZE 100M;
-- 새로운 사용자 생성
CREATE USER c##new_user IDENTIFIED BY password;
GRANT CREATE SESSION TO c##new_user;
2.5 SYS 계정 보안 고려사항
SYS 계정은 데이터베이스의 핵심이기 때문에 보안이 매우 중요합니다. 강력한 비밀번호를 설정해야 합니다.
SYS 계정의 접속 이력을 모니터링하고 필요한 경우에만 사용합니다. 다음 쿼리로 SYS 접속 내역을 확인할 수 있습니다.
-- V$PWFILE_USERS를 통한 SYSDBA 권한 보유자 확인
SELECT USERNAME, SYSDBA, SYSOPER
FROM V$PWFILE_USERS
WHERE SYSDBA = 'TRUE';
3. SYSTEM 계정
SYSTEM 계정은 일상적인 데이터베이스 관리 작업을 수행하기 위한 계정입니다. SYS 계정과 달리 데이터베이스의 시작/종료는 할 수 없지만, 대부분의 DBA 업무를 수행할 수 있습니다.
3.2 SYSTEM 계정의 권한 범위
SYSTEM 계정은 DBA 역할을 가지고 있습니다. 이는 다음의 작업들을 가능하게 합니다.
- 사용자 생성 및 삭제
- 테이블스페이스 관리 (생성, 수정, 삭제)
- 테이블스페이스 할당량 관리
- 사용자 비밀번호 변경
- 권한 부여 및 회수
- 데이터베이스 감시 및 성능 모니터링
3.3 SYSTEM 계정의 주요 작업 예시
-- 사용자 생성
CREATE USER c##new_user IDENTIFIED BY password;
-- 기본 접속 권한 부여
GRANT CREATE SESSION TO c##new_user;
-- RESOURCE 역할 부여 (객체 생성 권한)
GRANT RESOURCE TO c##new_user;
-- 여거 권한 부여
GRANT CREATE TABLE, CREATE VIEW, CREATE SEQUENCE TO c##new_user;
-- 테이블스페이스 할당량 설정
ALTER USER c##new_user QUOTA 100M ON USERS;
-- 기존 사용자의 비밀번호 변경
ALTER USER c##user IDENTIFIED BY new_password;
-- 특정 사용자의 시스템 권한 조회
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'c##user';
-- 특정 사용자의 역할 조회
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'c##user';
-- 특정 역할에 포함된 권한 조회
SELECT * FROM ROLE_SYS_PRIVS WHERE ROLE = 'RESOURCE';
-- 테이블스페이스 조회
SELECT TABLESPACE_NAME, STATUS, EXTENT_MANAGEMENT, ALLOCATION_TYPE
FROM DBA_TABLESPACES;
-- 테이블스페이스 생성 (SYSTEM 계정도 가능)
CREATE TABLESPACE newTableSpace
DATAFILE 'location/location' SIZE 100M
AUTOEXTEND ON NEXT 5M;
4. 문제 해경방법
-- 계정 잠금시
-- ORA-28000: the account is locked
-- SYSTEM 또는 SYS로 실행
ALTER USER c##hr ACCOUNT UNLOCK;
-- 필요시 비밀번호도 재설정
ALTER USER c##hr IDENTIFIED BY new_password;
-- 비밀번호 변경
-- 비밀번호도 재설정
ALTER USER c##user IDENTIFIED BY new_password;
'데이터' 카테고리의 다른 글
| SQL 심화 3 (정규표현식) (0) | 2025.03.06 |
|---|---|
| SQL 심화 2 (그룹함수, 윈도우함수, 순위함수, PIVOT, UNPIVOT절) (0) | 2025.03.06 |
| SQL 심화 1 (서브쿼리, 뷰, 집합연산자) (0) | 2025.03.06 |
| SQL 기본 함수 설명 주의사항 (0) | 2025.03.04 |
| SQL 기본 함수 설명2 (0) | 2025.03.04 |

