결론
TimeStamp Query 복사 후 사용
select * from temp as of timestamp(systimestamp-interval '120' minute)
--두 시간 전 데이터 조회
select * from temp as of timestamp(systimestamp-interval '2' hour)
as 부터 끝까지 복사해서 table 뒤에 붙여서 사용
원리 - `undo data`
작업을 하기 전 상태로 되돌릴 수 있는 데이터
데이터를 수정하거나 지우고 commit 했다면 `undo segment에 저장` 하게 된다.
Timestamp 를 사용하면 이 저장된 곳을 참조한다.
활성화된 undo segment 조회.
select * from v$rollname
undo segment는 기본적으로 자동으로 관리되게 설정되어있다.
show parameter undo;

AUTO
undo segment 설정
alter system set undo_management=auto scope=spfile;
alter system set undo_management=manual scope=spfile;
*spfile은 파라미터 파일로 오라클 운영에 있어서 필요한 설정 정보들이 들어있는 파일들이다.
그리고 db 복구시에 필요한 파일이다.
EX) *.undo_tablespace='UNDOTBS1'
근데 spfile은 바이너리 파일이라 우리가 해석할 수 없고, 대신 pfile로 뽑아서 설정할 수 있다.
create pfile = '?\database\initYJ.ORA' from spfile;
해당 폴더에 initYJ.ORA로 추출되고 확인할 수 있다.
해당 tablespace 조회
select tablespace_name, contents from dba_tablespaces;
undo tablespace 생성 & 변경
create undo tablespace undotbs2
datafile '/home/oracle/undotbs2.dbf' size 100m;
alter system set undo_tablespace=undotbs2;
retention 설정
alter system set undo_retention=10800;
--3시간 undo tada 보관
alter tablespace undotbs2 retention guarantee;
--기본값은 noguarantee
Flashback
timestamp를 써서 insert를 다시하거나 update를 수행하는데,
Flashback를 사용하면 해당 시점으로 바로 되돌릴 수 있지만, 더 많은 돈이 필요했다.
* ORA-00439: 기능이 사용으로 설정되지 않음: Flashback Table
alter table temp enable row movement;
flashback table temp to timestamp (systimestamp - interval '2' hour);
alter table temp disable row movement;
select * from v$version
오라클 버전을 조회해보자.
Oracle Database 11g Release 11.2.0.4.0 - 64bit Production
Production 은 지원 안해주고 Enterprise Edition 만 지원해준다.
row movement는 파티션 운영 중에 키 커럼의 데이터가 변경되어 이동 시 에러가 날 수 있는데,
파티션간 로우의 이동이 안되게 설정 되어 있기 때문이다.
풀어주고 막아주자.
'데이터베이스 > 오라클' 카테고리의 다른 글
[Oracle] 한 달 전 데이터를 SELECT 하기 (0) | 2022.08.08 |
---|---|
[Oracle] Select문 결과를 주기적으로 이메일 발송하기 (1) | 2020.11.20 |
[Oracle] Date to char 날짜 타입 포맷 변경 예제 (0) | 2020.10.26 |
[Oracle] 오라클 DELETE FROM 조건삭제 예시 (0) | 2020.10.21 |
[Oracle]오라클 INSERT INTO SELECT 예시 (0) | 2020.10.20 |