DCL(Data Control Language)
- 데이터를 제어하는 구문으로 계정에게 시스템 권한 또는 객체에 대한 접근 권한을 부여(GRANT)하거나 회수(REVOKE)하는 구문이다.
시스템 권한
- 데이터베이스에 접근하는 권한, 오라클에서 제공하는 객체를 생성할 수 있는 권한
- CREATE SESSION : 데이터베이스에 접속할 수 있는 권한
- CREATE TABLE : 테이블을 생성할 수 있는 권한
- CREATE VIEW : 뷰를 생성할 수 있는 권한
- CREATE USER : 계정을 생성할 수 있는 권한
- DROP USER : 계정을 삭제할 수 있는 권한
[표현법]
GRANT 권한1, 권한2, ... TO 사용자계정; : 권한 부여
REVOKE 권한1, 권한2, ... FROM 사용자계정; : 권한 회수
① SYS 계정(관리자 계정)
SAMPLE 계정 생성
CREATE USER SAMPLE IDENTIFIED BY SAMPLE(비밀번호);
- 저장 → 테스트
- 테스트 → 상태 : 실패 ! 계정을 생성됐지만 계정에 접속 할 수 있는 권한은 없다.
계정에 접속하기 위해서 CREATE SESSION 권한을 부여
GRANT CREATE SESSION TO SAMPLE;
- 테스트 → 상태 : 성공 !
② SAMPLE 계정
테이블 생성
CREATE TABLE TEST (
TID NUMBER
);
- CREATE TABLE 권한이 없기 때문에 오류 발생한다.
③ SYS 계정(관리자 계정)
계정에서 테이블을 생성할 수 있는 CREATE TABLE 권한을 부여
GRANT CREATE TABLE TO SAMPLE;
테이블 스페이스 할당(QUOTA)
-- ALTER : 객체 수정
ALTER USER SAMPLE QUOTA 2M ON SYSTEM; -- 2메가 바이트 생성하겠다.
④ SAMPLE 계정
- 계정이 소유하고 있는 테이블들은 바로 조작이 가능하다.
SELECT * FROM TEST;
INSERT INTO TEST VALUES(1);
DROP TABLE TEST;
- SAMPLE 계정으로 접속시, 다른 계정의 테이블에 접근할 수 있는 권한이 없기 때문에 오류가 발생한다.
-- SAMPLE 계정으로 접속시
-- 다른 계정의 테이블에 접근할 수 있는 권한이 없기 때문에 오류가 발생한다.
SELECT * FROM KH.EMPLOYEE;
⑤ SYS 계정(관리자 계정)
객체 권한
- 특정 객체를 조작할 수 있는 권한
- SELECT / INSERT / UPDATE / DELETE / ALTER
- 표현법
GRANT 권한 ON 객체 TO 사용자계정;
REVOKE 권한 ON 객체 FROM 사용자계정;
KH.EMPLOYEE 테이블을 SAMPLE 계정에서 조회할 수 있는 권한을 부여
GRANT SELECT ON KH.EMPLOYEE TO SAMPLE;
KH.DEPARTMENT 테이블을 SAMPLE 계정에서 조회할 수 있는 권한을 회수
REVOKE SELECT ON KH.DEPARTMENT FROM SAMPLE;
KH.DEPARTMENT 테이블을 SAMPLE 계정에서 데이터를 삽입할 수 있는 권한을 부여
GRANT INSERT ON KH.DEPARTMENT TO SAMPLE;
KH.DEPARTMENT 테이블을 SAMPLE 계정에서 데이터를 삽입할 수 있는 권한을 회수
REVOKE INSERT ON KH.DEPARTMENT FROM SAMPLE;
모든 테이블에 대한 조회 권한을 설정
GRANT SELECT ANY TABLE TO SAMPLE;
모든 테이블에 대한 조회 권한을 회수
REVOKE SELECT ANY TABLE FROM SAMPLE;
ROLE
- 특정 권한들을 하나로 묶어놓은 것을 ROLE이라 한다.
SELECT *
FROM ROLE_SYS_PRIVS
--WHERE ROLE = 'CONNECT';
--WHERE ROLE = 'DBA';
WHERE ROLE = 'RESOURCE';
'DB > SQL' 카테고리의 다른 글
OBJECT - SEQUENCE (0) | 2022.09.08 |
---|---|
OBJECT - VIEW (1) | 2022.09.07 |
TCL(Transaction Control Language) (0) | 2022.09.05 |
DML(Data Manipulation Language) (0) | 2022.09.04 |
DDL(Data Definition Language) (0) | 2022.09.03 |