오라클 DCL (GRANT, ,REVOKE , 트렌젝션)

최주영·2023년 4월 11일
0

오라클

목록 보기
17/22

[구디아카데미]
DCL

  • DB에 데이터를 제어하기 위한 명령어.
  • COMMIT, ROLLBACK, GRANT, REVOKE 등이 해당

✅ GRANT

  • 사용자 계정에게 권한을 주는 것
  • 권한 : CREATE VIEW, CREATE TABLE, INSERT, SELECT, UPDATE
  • 역할 : 권한의 묶음
  • 관리자 계정으로 권한 부여해야함
  • 권한은 하나씩밖에 부여못함 (전체 권한 한번에 못함)
GRANT CONNECT TO QWER;  // 접속을 할 수 있는 권한을 QWER 계정에 줌

GRANT SELECT ON BS.EMPLOYEE TO QWER;
// (BS계정의 EMPLOYEE 테이블을) 조회할수 있는권한을 QWER 계정에 줌

GRANT UPDATE ON BS.EMPLOYEE TO QWER;
(BS계정의 EMPLOYEE 테이블을) // 수정할수 있는권한을 QWER 계정에 

✅ REVOKE

  • 부여했던 권한을 다시 회수하는 것
REVOKE UPDATE ON BS.EMPLOYEE FROM QWER;  -- QWER 계정에게 UPDATE 권한부여한 것 다시 회수하기

✅ ROLE

  • 권한 묶음 만들기
  • 여러개의 권한을 한번에 부여할 때 사용함

CREATE ROLE MYROLE;  // (1) 권한 묶음 ROLE 만들기
GRANT CREATE TABLE, CREATE VIEW TO MYROLE; // (2) CREATE와 VIEW 권한을 MYROLE에 저장
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'MYROLE'; //  MYROLE에 저장된 권한 조회
GRANT MYROLE TO QWER; // (3) QWER 계정에게 MYROLE 묶음 권한 부여

✅ TCL

  • 트렌젝션을 컨트롤 하는 명령어

    💡 트렌젝션 : 하나의 작업단위 한개 서비스
    -> 데이터 조작언어(DML) 작업을 완수하기 위한 논리적인 작업 단위
    💡 트렌젝션의 대상되는 명령어 : DML(INSERT, UPDATE, DELETE)

✅ ROLLBACK

  • 지금까지 실행한 수정구문(DML)명령어를 모두 취소하는 명령어

✅ COMMIT

  • 지금까지 실행한 수정구문(DML) 명령어를 모두 DB에 저장하는 명령어
  • 이 문구를 실행 시 ROLLBACK 할 수 없음
  • 실제로 COMMIT 되어있는지 확인하려면 CMD 창인 SQL PLUS에서 확인해야한다
    -> SQLDEVELOPER 에서 실제로 값을 추가,수정,삭제를 해도 그 화면에서 바로 보이지만
    -> SQL_PLUS 에서는 값이 수정되어 있지 않는다, 즉 COMMIT를 하고 확인해야 저장이 된다.

하나의 작업 단위 예시

  • A계좌에서 B계좌로 돈을 이체할 때
    -> (1) A계좌 UPDATE (2) B계좌 UPDATE 총 두번이 되어야한다
  • A계좌에서 돈이빠지는 과정에서 문제가 생겼을 시
    -> (1)만 됨
  • B계좌에서는 돈을 받지 못한상태이다 즉 문제가 생기게된다
    -> 즉 (1), (2) 과정을 하나의 작업단위로 묶음
    -> 둘 중 하나라도 문제가 생기면 전체 취소됨(ROLLBACK)
    -> 다 만족하면 모두 실행됨 (COMMIT)

✅ 트랜잭션의 수행 단계별 상태 변화 과정

profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글