DCL, 트랜잭션

EUNJI LEE·2023년 4월 12일
0

SQL

목록 보기
9/14

DCL

계정의 권한을 관리하는 명령어로 SYSTEM계정이 수행해야 한다. GRANT 권한,역할 TO 계정명; 으로 작성해서 사용한다.

권한 조회는 SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='역할명'; 을 사용하면 해당 역할 안에 있는 권한들을 조회할 수 있다.

권한 : CREATE VIEW, CREATE TABLE, INSERT, SELECT, UPDATE 등

역할(ROLE) : 권한들의 묶음

권한 조회 및 부여

--권한 조회
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE';
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='CONNECT';

ALTER SESSION SET "_ORACLE_SCRIPT"=TRUE;
-->계정명에 ##을 붙이지 않게 해주는 명령어. 세션마다 실행해야한다.
CREATE USER QWER IDENTIFIED BY QWER DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS;
-->QWER 이라는 계정 생성
GRANT CONNECT TO QWER;
-->QWER에 CONNECT 권한 부여

--BS 계정의 EMPLOYEE 테이블을 조회, 수정할 수 있는 기능 부여
GRANT SELECT ON BS.EMPLOYEE TO QWER;
GRANT UPDATE ON BS.EMPLOYEE TO QWER;

권한 회수

REVOKE 권한||역할 FROM 계정명; 을 사용해서 해당 계정에 부여했던 권한을 회수할 수 있다.

--BS계정의 EMPLOYEE 테이블에 대한 수정 권환 회수
REVOKE UPDATE ON BS.EMPLOYEE FROM QWER;

ROLL 생성

ROLL은 원하는 권한을 조합해서 생성할 수 있다. CREATE ROLL 역할명; 으로 생성한 뒤 해당 ROLL에 넣을 권한들을 계정에 부여하는 것과 동일한 방법으로 작성해준다.

--MYROLL 이라는 이름의 역할 생성 후, TABLE, VIEW 생성 권한 부여
CREATE ROLE MYROLE;
GRANT CREATE TABLE, CREATE VIEW TO MYROLE;
--만든 ROLL을 QWER 계정에 부여
GRANT MYROLE TO QWER;

트랜잭션(transaction)

쪼갤 수 없는 업무 처리의 최소 단위를 말한다. 풀어서 설명하면 데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위(하나의 서비스) 또는 한 번에 모두 수행되어야 할 일련의 연산들을 의미한다.

COMMIT

지금까지 실행한 수정 구문 명령어를 모두 DB에 저장하는 명령어이다. 트랜잭션 내에서 실행했던 구문을 전부 DB에 확정해서 저장한다고 생각할 수 있다. COMMIT; 으로 실행한다.

한 개의 트랜잭션에 대한 작업을 정상적으로 완료했을 때, 해당 트랜잭션에서 행한 연산이 완료됐다고 확정해서 트랜잭션 관리자에게 알려주는 연산이다.

ROLLBACK

지금까지 실행한 수정 구문 명령어를 모두 취소어이다. 트랜잭션 내에 실행한 수정 구문을 전부 취소한다. ROLLBACK; 으로 실행한다.

ROLLBACK 연산은 하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스의 일관성을 깨뜨렸을 때, 이 트랜잭션의 일부가 정상적으로 처리되었더라도 처리의 일관성을 위해서 모두 취소할 때 사용한다.

예를 들면 게시글을 올린다고 했을 때, 2개의 첨부 파일을 올린다고 가정하면 하나의 파일만 성공적으로 올라갔다고 해서 게시글 업로드가 성공했다고 말할 수 없을 것이다. 게시글을 올리다가 오류가 발생하면 게시글을 다시 작성하게 하는 것이다.

profile
천천히 기록해보는 비비로그

0개의 댓글