DCL
* DCL : DATA CONTROL LANGUAGE
* 데이터 제어 언어
* 계정에게 시스템 권한 또는 객체접근권한을 부여(GRANT)하거나 회수(REVOKE)하는 언어
GRANT
* 권한을 부여할 때 사용하는 명령어
* 구체적으로는 시스템권한과 객체접근권한을 부여할 수 있음.
*
* [표현법]
* GRANT 권한, 권한, .... TO 계정명
시스템 권한
* 시스템 권한 : 특정 DB에 접근하는 권한, 객체들을 생성할 수 있는 권한
* [종류]
* CREATE SESSION : 계정에 접속할 수 있는 권한
* CREATE TABLE : 테이블을 생성할 수 있는 권한
* CREATE VIEW : 뷰(조회용 임시테이블)를 생성할 수 있는 권한
* CREATE SEQUENCE : 시퀀스를 생성할 수 있는 권한
* CREATE USER : 계정을 생성할 수 있는 권한
CREATE USER SAMPLE IDENTIFIED BY SAMPLE;
GRANT CREATE SESSION TO SAMPLE;
CREATE TABLE TEST(
TEST_ID NUMBER
);
GRANT CREATE TABLE TO SAMPLE;
CREATE TABLE TEST(
TEST_ID NUMBER
);
ALTER USER SAMPLE QUOTA 2M ON SYSTEM;
CREATE TABLE TEST(
TEST_ID NUMBER
);
SELECT * FROM TEST;
INSERT INTO TEST VALUES(1);
CREATE VIEW V_TEST
AS (SELECT * FROM TEST);
GRANT CREATE VIEW TO SAMPLE;
CREATE VIEW V_TEST
AS (SELECT * FROM TEST);
객체접근 권한
* 특정 객체들을 조작(DML - SELECT, INSERT, UPDATE, DELETE)할 수 있는 권한
*
* [표현법]
* GRANT 권한종류 ON 특정객체 TO 계정명;
* =====================================
* 권한종류 특정 객체
* =====================================
* SELECT TABLE, VIEW, SEQUENCE
* INSERT TABLE, VIEW
* UPDATE TABLE, VIEW
* DELETE TABLE, VIEW
SELECT *
FROM KH.EMPLOYEE;
GRANT SELECT ON KH.EMPLOYEE TO SAMPLE;
SELECT *
FROM KH.EMPLOYEE;
INSERT INTO KH.DEPARTMENT VALUES('D0','회계부','L2');
GRANT INSERT ON KH.DEPARTMENT TO SAMPLE;
INSERT INTO KH.DEPARTMENT VALUES('D0','회계부','L2');
COMMIT;
ROLE
* 특정 권한들을 하나의 집합으로 모아놓은 것
* CONNECT : 접속할 수 있는 권한들을 묶어놓은 ROLE (CREATE SESSION)
* RESOURCE : 특정 객체들을 생성 및 관리할 수 있는 권한들을 묶어놓은 ROLE
* (CREATE TABLE, CREATE SEQUENCE,...)
SELECT *
FROM ROLE_SYS_PRIVS
WHERE ROLE IN ('CONNECT','RESOURCE');
CREATE USER MYTEST IDENTIFIED BY MYTEST;
GRANT CONNECT, RESOURCE TO MYTEST;
REVOKE RESOURCE FROM MYTEST;
DROP USER MYTEST;
REVOKE
* 권한을 회수할 때 사용하는 명령어
*
* [표현법]
* REVOKE 권한, 권한, 권한,... FROM 계정명
REVOKE CREATE TABLE FROM SAMPLE;
CREATE TABLE TEST2(
TEST_ID NUMBER
);