전체 방문자
오늘
어제
21종
종이의 코딩 공부방
21종
  • 분류 전체보기 (171)
    • JAVA (64)
    • Springboot (46)
      • 블로그만들기 (45)
    • Database (60)
      • Oracle (60)
    • 프로젝트 3 (CELOVER) (0)
    • 개발서버 구축 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
21종

종이의 코딩 공부방

Database/Oracle

[Oracle] DCL(DATA CONTROL LANGUAGE), ROLE

2023. 8. 2. 00:31

< DCL : DATA CONTROL LANGUAGE >

데이터 제어 언어
계정에게 시스템권한 또는 객체접근권한을 부여(GRANT)하거나 회수(REVOKE)하는 구문
    
> 시스템 권한    : DB에 접근하는 권한, 객체들을 생성할 수 있는 권한
> 객체접근권한   : 특정 객체들을 조작할 수 있는 권한

 

 

* 시스템권한 종류
- CREATE SESSION : 접속 할 수 있는 권한
- CREATE TABLE : 테이블을 생성할 수 있는 권한
- CREATE VIEW : 뷰를 생성할 수 있는 권한
- CREATE SEQUENCE : 시퀀스를 생성할 수 있는 권한
... : 일부는 커넥트안에 포함돼있음!!!


-- 1. SAMPLE / SAMPLE 계정 생성 (관리자계정)
CREATE USER SAMPLE IDENTIFIED BY SAMPLE;
-- 상태: 실패 -테스트 실패: ORA-01045: user SAMPLE lacks CREATE SESSION privilege; logon denied

-- 2. 접속을 위해 CREATE SESSION 권한 부여 (관리자 계정)
GRANT CREATE SESSION TO SAMPLE;

-- DCL_SAMPLE 계정
CREATE TABLE TEST(
    TEST_ID NUMBER,
    TEST_NAME VARCHAR2(10)
);

-- CREATE TABLE 할 수 있는 권한이 없어서 문제 발생!
-- 3_1. CREATE TABLE 권한 받기
-- 3_2. TABLESPACE 할당 받기
-- (관리자 계정)
-- 3_1. 테이블 생성 CREATE TABLE 권한 부여
GRANT CREATE TABLE TO SAMPLE;
-- 3_2. TABLESPACE 할당 (SAMPLE 계정 변경)
ALTER USER SAMPLE QUOTA 2M ON SYSTEM;

이제 테이블을 조작할 수 있다.

* 객체 접근 권한 종류
  특정 객체에 접근해서 조작할 수 있는 권한
     

권한종류          특정 객체
SELECT        TABLE, VIEW, SEQUENCE
INSERT        TABLE, VIEW
UPDATE        TABLE, VIEW
DELECT        TABLE, VIEW
 ...

[표현식]
GRANT 권한종류 ON 특정객체 TO 계정

 

KH계정에 있는 EMPLOYEE 테이불에 접근
--> 근데 조회 권한이 없음

-- (관리자 계정)
-- 4.SELECT ON KH.EMPLOYEE 권한부여
GRANT SELECT ON KH.EMPLOYEE TO SAMPLE;
-- (DCL_SAMPLE 계정)
-- 4. SELECT ON KH.EMPLOYEE 권한 부여받음
SELECT * FROM KH.EMPLOYEE;

 

 

-- (관리자 계정)
-- 5.INSERT ON KH.DEPARTMENT 권한부여
GRANT INSERT ON KH.DEPARTMENT TO SAMPLE;
-- (DCL_SAMPLE 계정)
-- 5. INSERT ON KH.DEPARTMENT 권한 부여받음
INSERT INTO KH.DEPARTMENT
VALUES('D0', '회계부', 'L1');

COMMIT; -- 커밋해야 들어감

< 롤 ROLE >

- 특정 권한들을 하나의 집합으로 모아놓은 것
    
CONNECT     : 접속할 수 있는 권한, CREATE SESSION
RESOURCE    : 특정 객체들을 생성할 수 있는 권한 CREATE TABLE, CREATE SEQUENCE...

GRANT RESOURCE, CONNECT TO 계정명;

 

CONNECT 와 RESOURCE에 포함된 권한조회하기

-- (관리자 계정)
SELECT *
FROM ROLE_SYS_PRIVS
WHERE ROLE IN ('CONNECT', 'RESOURCE')
ORDER BY 1;

 

    'Database/Oracle' 카테고리의 다른 글
    • [Oracle] OBJECT(1) - VIEW
    • [Oracle] TCL(TRANSACTION CONTROL LANGUAGE)
    • [Oracle] DDL_실습문제
    • [Oracle] DDL(2) - ALTER, DROP
    21종
    21종
    코딩 공부한 것 정리하려고 만든 블로그

    티스토리툴바