<DCL : 데이터 제어문>
계정에 시스템 권한 또는 객체 접근 권한을 부여하거나 회수하는 구문
누가 어떤 객체에 무엇을 할 수 있는지를 통제한다.
> 시스템 권한 : DB객체 생성, 사용자 생성 권한 등 관리자 권한
> 객체 접근 권한 : 테이블, 뷰, 시퀀스 등 특정 객체에 접근할 수 있는 권한
1) 사용자 생성
CREATE USER 사용자명 IDENTIFIED BY 비밀번호;
2) 권한 부여 방법
GRANT 권한(RESOURCE, CONNECT) TO 계정;
3) 권한 회수
REVOKE 권한 TO 계정;
>> 관리자 계정 생성 후 사용자 계정으로 접속하기 위해 사용했었다.
-- 사용자 계정 생성
CREATE USER c##SERVER IDENTIFIED BY SERVER;
-- 접속 권한 및 테이블 생성 권한 부여
GRANT CONNECT, RESOURCE TO c##SERVER;
-- 테이블스페이스 설정
ALTER USER C##SERVER DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS;
> ORACLE은 기본적으로 사용자 생성 후 권한을 부여해야 로그인 및 객체 사용이 가능하다.
SELECT * FROM ROLE_SYS_PRIVS;

<TCL : 트랜잭션 제어문>
트랜잭션은 하나 이상의 DML문(INSERT, UPDATE, DELETE)을 묶어서 하나의 논리적 작업 단위로 처리하는 개념
DML문 한 개를 수행할 때 트랜잭션이 존재하지 않으면 트랜잭션을 만들어서 묶는다.
트랜잭션이 존재하면 해당 트랜잭션에 작업을 묶어서 처리한다.
주요 2개 명령어
COMMIT : 트랜잭션 확정 및 저장
ROLLBACK : 트랜잭션 취소 및 이전 상태로 복원
그 외 명령어
SAVEPOINT : 롤백용으로 중간지점을 지정
ROLLBACL TO : 특정 지점까지 복원
대부분 요즘은 AUTOCOMMIT이 설정되어 있어서 DML을 전달할 때 마다 자동으로 커밋이 된다.
AUTOCOMMIT 여부를 확인할 수 있다.
SHOW AUTOCOMMIT;

AUTOCOMMIT을 수동 설정 할 수 있다. ON -> 자동으로 DML 실행 시 마다 COMMIT이 진행됨.
SET AUTOCOMMIT ON;
SET AUTOCOMMIT OFF;
DROP TABLE EMP_01;
CREATE TABLE EMP_01
AS (SELECT EMP_ID, EMP_NAME, DEPT_TITLE FROM EMPLOYEE JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID));
SELECT * FROM EMP_01;
-- 사번이 200, 201번인 사원 제거
DELETE FROM EMP_01
WHERE EMP_ID IN (200, 201);
ROLLBACK;
DELETE FROM EMP_01
WHERE EMP_ID IN (200, 201);
COMMIT;
ROLLBACK;
-- 사번이 217, 216, 214번인 사원 제거
DELETE FROM EMP_01
WHERE EMP_ID IN(213, 216, 217);
SELECT * FROM EMP_01;
SAVEPOINT SP;
INSERT INTO EMP_01
VALUES(801, '전준우', '기술지원부');
INSERT INTO EMP_01
VALUES(802, '윤동희', '창업지원부');
ROLLBACK TO SP;
COMMIT;
SELECT * FROM EMP_01;
INSERT INTO EMP_01
VALUES(801, '전준우', '기술지원부');
INSERT INTO EMP_01
VALUES(802, '윤동희', '창업지원부');
CREATE TABLE TEST(
TID NUMBER
);
ROLLBACK;
SELECT * FROM EMP_01;
===>>
DDL문 (CREATE, ALTER, DROP)을 수행하는 순간 기존 트랜잭션은 무조건 COMMIT 된다. (실제 DB반영)
즉, DDL 문 수행 전 변경사항들이 있다면 정확하게 픽스하고 해야한다.
ACID 속성
트랜잭션의 일관성과 신뢰성을 보장하기 위해 지켜야하는 4가지 핵심 속성
A(Automicity) 원자성 : 트랜잭션 내 작업은 모두 완료되거나, 모두 취소되어야 한다.
C(Consistency) 일관성 : 트랜잭션 수행 전후에 db상태가 항상 유효한 상태(제약조선 충족)여야 한다.
I(Isolation) 독립성 : 여러 트랜잭션이 동시에 실행되어도 서로 간섭 없이 독립적으로 실행되어야 한다.
D(Durability) 지속성 : 트랜잭션이 COMMIT 되면, 그 결과는 시스템이 종료되고 영구적으로 보존되어야 한다.'SQL' 카테고리의 다른 글
| ORACLE SQL_14) SEQUENCE (0) | 2025.08.06 |
|---|---|
| ORACLE SQL_13) VIEW (4) | 2025.08.05 |
| ORACLE SQL_11) DML - Data Manipulation Language (0) | 2025.08.05 |
| ORACLE SQL_10) DDE (ALTER, DROP) (1) | 2025.08.04 |
| ORACLE SQL_09) DDL - Data Definition Language (2) | 2025.08.04 |