본문 바로가기
뒷북 정리 (국비 교육)/sql, db

[oracle DB] TCL (Transaction Control Language) / 기타

by 규글 2021. 12. 17.

5. TCL (Transaction Control Language : 트랜잭션 제어어)

TCL란 DML(insert, update, delete)문이 실행되어서 DBMS(database management system)에 저장되거나, DML문을 수행하기 이전의 상태로 되돌리기 위해 실행되는 sql문이다.

  1. transaction(트랜잭션)의 사전적 의미는 거래 혹은 처리(과정)인데, '분리되어서는 안되는 논리적인 작업 단위'를 의미한다. 예를 들어 은행 송금 작업을 한다고 했을 때, 나의 통장에서 일정 금액이 빠져나가고 그 금액만큼의 돈이 다른 사람의 통장으로 들어가는 이 모든 일련의 작업들이 하나의 트랜잭션이 되는 것이다. 돈이 빠져나가는 것과 돈이 들어가는 것이 함께 일어나야하는, 분리되어서는 안되는 작업 단위인 것이다.

  2. DB에서의 트랜잭션의 시작점이라고 한다면 DML문을 실행하기 전 단계, 즉 DBMS에 접속한 순간이라든지 DML를 작업하고 commit을 했을 때나 rollback 을 통해 이전 commit으로 돌아갔을 때를 의미한다.
  3. 반대로 트랜잭션의 끝 점이라고 한다면 DB가 정상적으로든 비정상적으로든 종료되는 시점이나 DML문을 실행하고 commit 하는, 혹은 rollback 을 하는 바로 그 순간이 될 수 있고, 작업하는 세션을 종료할 때도 될 수 있다.

  4. TCL에는 다음의 세 종류가 있다.
     insert into member values(4, 'AAA', 'BBB');
     savepoint myPoint;
     insert into member values(5, 'bbb', 'BBB');
     insert into member values(6, 'ccc', 'BBB');
     rollback to myPoint;
     commit;​
    • commit : sql문의 결과를 영구적으로 DB에 반영한다.
    • rollback : sql문의 실행 결과를 취소하고, 이전 commit의 상태로 돌아간다.
    • savepoint : 트랜잭션의 한 지점에 표시하는 savepoint이다.

 

 

기타 명령어

  1. ed : ed + enter 하면 메모장이 하나가 열리는데, 오타가 있었을 경우 수정하고 저장하는 것이 가능해진다. 수정하고 저장한 후에 / + enter 하게 되면 수정된 내용으로 실행된다.
  2. spool '파일 이름' : 해당 파일이 만들어진다. 그리고 그 파일에 앞으로 작성하는 내용들이 기록된다. 파일 이름은 확장자까지 명시해야하며, 아무런 확장자 없이 이름만 쓸 경우, .LST 확장자로 만들어지는데 무엇인지는 모르겠다.
    spool off : 파일에 대한 기록을 멈춘다.
  3. host : sql을 사용하다가 밖으로 나갈 수 있다. exit를 통해서 다시 sql 사용 공간으로 넘어올 수 있다.

  4. 혹시 sql문을 작성하다가 오류가 뜬다면, 각 오류마다 붙은 번호가 다르기 때문에 해당 오류의 번호를 복사해서 검색했을 경우 상당한 도움을 받을 수 있다.
  5. 위 이미지 경로에 해당하는 위치에 연습용 file들이 많다. 참고해보는 것도 좋다.

 

command(dos) 창에서 명령어 사용하기

lsnrctl stop : 오라클 리스너 정지하기
lsnrctl start : 오라클 리스너 시작하기
lsnrctl status : 현재 리스너 상태 보기
tnsping dbname 숫자(확인 횟수) : 접속할 DB 와의 통신상태 확인

 

 

참고

insert into dept2 select * from dept;

create table dept3 as select * from dept ;

create table dept4 as select * from dept where 1=2;

select를 통해 table을 복사할 수 있다.

두 번째 방법의 경우 CTAS(아마 create table ~ as ~ 를 줄여서 말하는 것 같다.) 기법이라고 하는데, 제약 조건은 복사가 안된다는 점이 특징이다.

세 번째 방법의 경우 table의 구조만 복사하는 방법인데, 조건절이 항상 false인 편법을 사용해서 구조만 복사해낸다.

댓글