Data/SQLD 필기 준비

[SQLD] DCL 사용과 TCL 사용

안정민 2023. 11. 12. 11:56

1) DCL 

1-1) GRANT문

GRANT 문은 데이터베이스 사용자에게 권한을 부여한다

데이터 베이스 사용을 위해서는 권한이 필요하며 연결, 입력, 수정, 삭제, 조회를 할 수 있다

권한의 종류에는 SELECT, INSERT, UPDATE, DELETE, REFERENCES, ALTER, INDEX, ALL 등이 있다.

위의 권한 중 부여하고자 하는 권한을 위 코드의 previleges 부분에 작성하고 object는 테이블 명이며 user은 권한을 부여하고자 하는 오라클 데이터베이스 사용자의 이름이다

 

WITH GRANT OPTION은 특정 사용자에게 권한을 부여할 수 있는 권한을 부여하는 것

권한을 A 사용자가 B에게 부여하고 B가 다시 C를 부여한 후에 권한을 취소(REVOKE) 하면 모든 권한이 회수된다

 

WITH ADMIN OPTION은 테이블에 대한 모든 권한을 부여하는 것

권한을 A 사용자가 B에 부여하고 B가 다시 C에게 부여한 후에 권한을 취소 (REVOKE) 하면 B 사용자 권한만 취소된다.

 

1-2) REVOKE

REVOKE문은 데이터 베이스 사용자에게 부여된 권한을 회수한다

 

 

2) TCL

2-1) COMMIT 문

COMMIT은 INSERT, DELETE, UPDATE문으로 변경한 데이터를 데이터베이스에 반영한다

변경 이전의 데이터는 잃어버리게 되며 새로운 데이터를 원본 데이터베이스에 반영하여 적용한다

다른 모든 데이터베이스 사용자는 변경된 데이터를 볼 수 있다.

COMMIT이 완료되면 데이터 베이스 변경으로 인한 LOCK이 해제된다 (UNLOCK)

COMMIT이 완료되면 다른 모든 데이터 베이스 사용자는 변경된 데이터를 조작할 수 있다

COMMIT을 실행하면 하나의 트랜잭션 과정을 종료한다 

 

ORACLE 데이터 베이스는 암시적 트랜잭션 관리를 한다

즉, ORACLE 데이터베이스로 트랜잭션을 시작하고, 트랜잭션의 종료는 ORACLE 데이터 베이스 사용자가 COMMIT 혹은 ROLL-BACK으로 처리해야한다

 

2-2) ROLLBACK문

ROLLBACK을 실행하면 데이터에 대한 변경 사용을 모두 취소하고 트랜잭션을 종료한다

이전의 COMMIT한 곳까지만 복구한다

실행 시 LOCK이 해제되고 다른 사용자도 데이터 베이스 행을 조작할 수 있다

 

2-3) SAVEPOINT (저장점)

SAVEPOINT는 트랜잭션을 작게 분할하여 관리하는 것으로, SAVEPOINT를 사용하면 지정된 위치 이후의 트랜잭션만 ROLLBACK 할 수 있다

SAVEPOINT의 지정은 SAVEPOINT<SAVEPOINT이름>을 실행하면 된다

지정된 SAVEPOINT까지ㅏㅁㄴ 데이터 변경을 취소하고 싶은 경우는 ROLLBACK TO <SAVEPOINT 이름>을 실행한다

위와 같은 명령을 실행하면 t2 이후의 작성 내용은 모두 취소되고 t1과 t2 사이의 10, 20  값만 정상적으로 커밋되어 조회된다.