DCL (DATA CONTROLL LANGUAGE) 데이터 제어 언어
•
계정에게 시스템권한 또는 객체접근권한을 부여(GRANT)하거나 회수(REVOKE)하는 언어
•
시스템권한 : DB에 접근하는 권한, 객체들을 생성할 수 있는 권한
•
객체접근권한 : 특정 객체를 조작할 수 있는 권한
•
시스템권한 종류
◦
CREATE SESSION : 접속할 수 있는 권한
◦
CREATE TABLE : 테이블을 생성할 수 있는 권한
◦
CREATE VIEW : 뷰 생성할 수 있는 권한
◦
CREATE SEQUENCE : 시퀀스 생성할 수 있는 권한
◦
CREATE USER : 계정 생성할 수 있는 권한
...
-- < 관리자 계정 >
-- 1. SAMPLE/SAMPLE 계정 생성
CREATE USER SAMPLE IDENTIFIED BY SAMPLE;
-- 2. 접속하기 위해서 CREATE SESSION 권한 부여
GRANT CREATE SESSION TO SAMPLE;
SQL
복사
-- < SAMPLE 계정 >
-- CREATE TABLE 할 수 있는 권한이 없어서 문제 발생
-- 오류 발생 "privileges" -> 권한에 관한 오류
-- 3_1. CREATE TABLE 권한 부여받기
-- 3_2. TABLESPACE 할당 받기
CREATE TABLE TEST(
TEST_ID NUMBER,
TEST_NAME VARCHAR2(20)
);
-- CREATE TABLE 권한 부여받는 순간부터 테이블들 바로 조작 가능
SELECT * FROM TEST;
INSERT INTO TEST VALUES(10, '안녕');
-- 뷰 객체를 생성할 수 있는 CREATE VIEW 권한이 없어서 문제 발생
-- 4. CREATE VIEW 권한 부여받기
CREATE VIEW VW_TEST
AS SELECT * FROM TEST;
SELECT * FROM VW_TEST;
--SELECT * FROM (SELECT * FROM TEST);
SQL
복사
-- < 관리자 계정 >
-- 3_1. 테이블을 생성할 수 있는 CREATE TABLE 권한 부여
GRANT CREATE TABLE TO SAMPLE;
-- 3_2. TABLESPACE 할당! (SAMPLE계정 변경)
ALTER USER SAMPLE QUOTA 2M ON SYSTEM;
-- 4. CREATE VIEW 권한 부여하기
GRANT CREATE VIEW TO SAMPLE;
SQL
복사
객체 접근 권한 종류
•
특정 객체에 접근해서 조작할 수 있는 권한
기본 보기
Search
•
[표현법]
GRANT 권한종류 ON 특정객체 TO 계정명;
-- < SAMPLE 계정 >
-- KH계정의 EMPLOYEE테이블에 접근해서 조회할 수 있는 권한 없음
-- 5. SELECT ON KH.EMPLOYEE
SELECT * FROM KH.EMPLOYEE;
-- 6. INSERT ON KH.DEPARTMENT 권한 부여받기
INSERT INTO KH.DEPARTMENT
VALUES('D0', '회계부', 'L1');
ROLLBACK;
SQL
복사
-- < 관리자계정 >
-- 5. KH.EMPLOYEE테이블에 조회(SELECT)할 수 있는 권한 부여하기
GRANT SELECT ON KH.EMPLOYEE TO SAMPLE;
-- 6.
GRANT INSERT ON KH.DEPARTMENT TO SAMPLE;
SQL
복사
GRANT CONNECT, RESOURCE TO 계정명;
롤 ROLE
•
특정 권한들을 하나의 집합으로 모아놓은 것
•
CONNECT : CREATE SESSION (접속할 수 있는 권한)
•
RESOURCE : CREATE TABLE, CREATE SEQUENCE, ... (특정 객체들을 생성할 수 있는 권한)
SELECT *
FROM ROLE_SYS_PRIVS
WHERE ROLE IN ('CONNECT', 'RESOURCE')
ORDER BY ROLE;
SQL
복사


