나는 프로젝트에서 db tool이 지정되지 않은 경우에는 주로 dbeaver를 쓰는 편이다.
프로젝트 철수를 하고 다음 프로젝트에 투입을 하게되는데, 보통 PC를 포맷하고 철수하다 보니
모든 프로그램이 삭제된 상태로 다음 프로젝트에 투입된다.
이번에도 마찬가지로 신규 프로젝트 투입 후 dbeaver를 새로 설치하게 되었다.
지금 투입된 프로젝트에서 oracle을 사용 중인데, where 절을 빼먹고 update문을 날리는 초보적인 실수를 하게 되었다.
dbeaver auto commit 설정 변경
오라클 Database를 사용하는 경우
보통 auto commit이 비활성화되어있는 경우가 많으나,
사용하는 db툴에 따라 Auto commit이 default 활성화되어있을 수 있다.
내가 사용한다고 언급한 dbeaver의 경우 아래와 같이 확인 가능하다.
Auto-Commit : 자동 커밋 / SQL문 실행 시 즉시 커밋됨
Manual Commit : 수동 커밋 / SQL문 실행 후 commit 명령어 실행 후 커밋됨
Smart Commut mode : 데이터 수정 모드 시 수동모드, 조회 시 자동모드로 전환 (Smart모드는 아래 dbeaver 사이트의 자세한 설명을 참조하기 바란다)
ORACLE 데이터 롤백
조건을 빼먹고 DELETE 또는 UPDATE를 하게 되어 AUTO COMMIT 된 경우
데이터 복구를 하기 위해 아래와 같이 이전 데이터를 확인 가능하다.
SELECT * FROM 테이블명 AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '시간' MINUTE);
예를 들어 테이블명이 TEST이고, DELETE FROM TEST를 날려
3분 전 데이터 복구를 원하는 경우, 아래와 같이 사용할 수 있다.
INSERT INTO TEST SELECT * FROM TEST AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '3' MINUTE);
dbeaver는 트랜잭션 모드가 auto commit로 되어있기 때문에 최초 설치 시 변경을 해주는 것이 좋다.
oracle은 롤백이 가능하지만, mysql이나 mssql은 데이터 롤백 방법이 까다롭기 때문이다.
'개발' 카테고리의 다른 글
[javascript] 카카오지도 api 지도에 마커 표시하기 (0) | 2021.05.12 |
---|---|
[SPRING] Cacheable annotation을 사용하여 공통코드 관리하기 (0) | 2021.05.07 |
[솔라리스 ] vi 편집기 주요 명령어 (0) | 2021.04.29 |
[XSL 기본문법] TEMPLATE, PARAM, ATTRIBUTE, VARIABLE (0) | 2021.04.26 |
[DBEAVER] 쿼리자동정렬 / 단축키 변경 (0) | 2021.04.25 |
댓글