시스템권한(System Privileges)
- 시스템권한은 사용자가 데이터베이스에서 특정 작업을 수행 할 수 있도록 한다
- 권한의 ANY 키워드는 사용자가 모든 스키마에서 권한을 가짐을 의미 한다.
- GRANT 명령은 사용자 또는 ROLE에 대해서 권한을 부여 할 수 있다.
- REVOKE 명령은 권한을 회수 한다.
대표적인 시스템권한
- CREATE SESSION : 데이터 베이스를 연결할 수 있는 권한
- CREATE ROLE : 오라클 데이터베이스 역할을 생성할 수 있는 권한
- CREATE VIEW : 뷰의 생성 권한
- ALTER USER : 생성한 사용자의 정의를 변경할 수 있는 권한
- DROP USER : 생성한 사용자를 삭제시키는 권한
시스템권한 부여 문법
- system_privilege : 부여할 시스템권한의 이름
- role : 부여할 데이터베이스 역할의 이름
- user, role : 부여할 사용자 이름과 다른 데이터 베이스 역할 이름
- PUBLIC : 시스템권한, 또는 데이터베이스 역할을 모든 사용자에게 부여할 수 있다.
- WITH ADMIN OPTION : 권한을 부여 받은 사용자도 부여 받은 권한을 다른 사용자 또는 역할로 부여할 수 있게된다.
시스템권한 회수
SQL>REVOKE CREATE USER, ALTER USER, DROP USER
FROM scott;
권한이 회수되었습니다.
시스템 권한을 회수해도, 회수 당한 사용자가 권한을 부여한 당사자는 여전히 받은 권한을 유지한다.
객체권한(Object Privileges)
- 테이블이나 뷰, 시퀀스, 프로시저, 함수, 또는 패키지 중 지정된 한 객체에 특별한 작업을 수행 할 수 있게 한다.
- 객체 소유자는 다른 사용자에게 특정 객체권한을 부여 할 수 있다.
- PUBLIC으로 권한을 부여하면 회수할 때도 PUBLIC으로 해야 한다.
- 기본적으로 소유한 객체에 대해서는 모든 권한이 자동적으로 획득된다.
- WITH GRANT OPTION 옵션은 ROLE에 권한을 부여할 때는 사용할 수 없다.
객체권한 부여 예제
SQL>GRANT SELECT, INSERT
ON emp
TO scott
WITH GRANT OPTION;
권한이 부여되었습니다.
객체권한의 회수
- 객체 권한의 철회는 그 권한을 부여한 부여자만이 수행할수 있다.
- CASCADE CONSTRAINTS : 이 명령어의 사용으로 참조 객체 권한에서 사용 된 참조 무결성 제한을 같이 삭제 할 수 있다.
- WITH GRANT OPTION으로 객체 권한을 부여한 사용자의 객체 권한을 철회하면, 권한을 부여받은 사용자가 부여한 객체 권한 또한 같이 철회되는 종속철회가 발생한다.
시스템 권한: "무언가를 만들거나 없앨 수 있는" 권한
객체 권한: "이미 있는 것을 사용할 수 있는" 권한
롤(ROLE)
- ROLE을 이용하면 권한 부여와 회수를 쉽게 할 수 있다.
- ROLE은 CREATE ROLE권한을 가진 USER에 의해서 생성 된다.
- 한 사용자가 여러개의 ROLL을 ACCESS할 수 있고, 여러 사용자에게 같은 ROLE을 부여할 수 있다.
- 시스템 권한을 부여하고, 취소할 때와 동일한 명령을 사용하여 사용자에게 부여하고, 취소 한다.
- 사용자는 ROLE에 ROLE을 부여할 수 있다.
- 오라클 데이터베이스를 설치하면 기본적으로 CONNECT, RESOURCE, DBA ROLE이 제공 된다.

ROLE의 부여 순서
① ROLE의 생성 : CREATE ROLE manager
② ROLE에 권한 부여 : GRANT create session, create table TO manager
③ ROLE을 사용자 또는 ROLE에게 부여 : GRANT manager TO scott, test;
SQL>CREATE ROLE manager;
SQL>GRANT create session, create table TO manager;
SQL>GRANT manager TO scott, test;

RESOURCE ROLE
- Store Procedure나 Trigger와 같은 PL/SQL을 사용할 수 있는 권한 들로 이루어져 있다.
- PL/SQL을 사용하려면 RESOURCE ROLE을 부여해야 한다.
- 유저를 생성하면 일반적으로 CONNECT, RESOURCE롤을 부여 한다.
DBA ROLE
- 모든 시스템 권한이 부여된 ROLE 이다.
- DBA ROLE은 데이터베이스 관리자에게만 부여해야 한다.
출처: http://www.gurubee.net/lecture/1345