개발 공부
SQL - DCL (GRANT / REVOKE ) 본문
<DCL> - DATA CONTROL LANGUAGE
데이터 제어 언어
일반사용자에게 시스템 권한 및 객체 접근 권한 부여(GRANT) 및 회수(REVOKE)하는 구문
1 시스템 권한 : DB에 접근하는 권한, 객체들을 생성할 수 있는 권한
시스템권한 종류
-CREATE SESSION : 접속할 수 있는 권한
-CERATE TABLE : 테이블을 생성할 수 있는 권한
-CREATE VIEW : 뷰를 생성할 수 있는 권한
-CREATE SEQUENCE : 시퀀스를 생성할 수 있는 권한
.....: 일부는 CONNECT 안에 포함되어 있다.
TEST)
1) 유저생성만 진행 했을 경우 (권한 미 부여) 접속이 불가능하다.
2) 해결방안 접속 권한만 부여 하기
GRANT CREATE SESSION TO TESTDCL;
3)접속 권한만 부여했기 떄문에 각각의 권한(테이블 ,뷰 , 시퀀스)을 부여해 주어야한다.
>각각의 권한을 따로 부여해도 상관없지만 보통은 정해진 룰 (권한의 집합)에 의해 권한을 부여한다.
사전정의된 롤 표 > 새로운 롤 등록도 가능하다
CONNECT : 접속할 수 있는권한 CREATE SESSION
RESOURCE : 특정 객체들을 생성할 수 있는 권한 CREATE TABLE , CREATE SEQUENCE...
롤 종류 | 롤에 부여된 권한 |
CONNECT | ALTER SESSION CREATE DATABASE LINK CREATE CLUSTER CREATE SEQUENCE CREATE SESSION CREATE SYNONYM CREATE TABLE CREATE VIEW |
RESOURCE | CREATE CLUSTER CREATE PROCEDURE CREATE SEQUENCE CREATE TABLE CREATE TRIGGER |
2. 객체접근 권한 : 특정 객체들을 조작할 수 있는 권한
특정 객체에 접근해서 조작할 수 있는 권한
[표현식]
GRANT 권한종류 ON 특정객체 TO 계정
권한종류 특정객체
SELECT TABLE / VIEW / SEQUENCE
INSERT TABLE / VIEW
UPDATE TABLE / VIEW
DELETE TABLE / VIEW
예) GRANT SELECT ON KH.EMPLOYEE TO SAMPLE;
TEST) TESTDCL 계정에서 KH 계정의 테이블을 조회하려고 하는 상황
1) 본인 계정에 대한 접속 권한만 있을 뿐더러 다른 계정의 테이블 조회 권한이 없기 때문에 에러가 발생한다.
2) 해결방안 KH계정에 속한 EMPLOYEE 테이블 권한을 부여해준다.
GRANT SELECT ON KH.EMPLOYEE TO TESTDCL;
이후 조회가능하다.
3. (AUTO )COMMIT/ROLLBACK
DCL/DDL문은 명령어 하나하나가 하나의 트랜젝션으로 실행시 COMMIT(영구 저장 되기) 때문에
신중하게 사용해야한다.
DML(insert,delete,update) 는 버퍼에서 처리한 DML 명령어가 실제 테이블에 반영되기 위해서 수동으로 commit/rollback을 사용해서 트랜젝션을 처리 해줘야한다.
'DataBase > ORACLE_SQL' 카테고리의 다른 글
SQL - 문법(JOIN) (0) | 2023.07.14 |
---|---|
SQL - TCL(COMMIT,ROLLBACK) (0) | 2023.07.14 |
SQL -DML(DELETE) (0) | 2023.07.11 |
SQL -DML(UPDATE) (0) | 2023.07.11 |
SQL - DML (INSERT) (0) | 2023.07.05 |