DB/SQL

DCL(Data Control Language)

제주니어 2022. 9. 6. 17:49

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