"오라클 데이터 복구"의 두 판 사이의 차이
DB CAFE
11번째 줄: | 11번째 줄: | ||
※ 설정 | ※ 설정 | ||
1. 자동 언두 관리 시스템을 사용해야 합니다. (UNDO_MANAGEMENT 파라미터를 AUTO로 설정) | 1. 자동 언두 관리 시스템을 사용해야 합니다. (UNDO_MANAGEMENT 파라미터를 AUTO로 설정) | ||
− | + | <source> | |
− | + | UNDO_MANAGEMENT = AUTO | |
+ | </source> | ||
2. 이전의 어느 시점까지의 언두(UNDO)정보를 보유하여 Flashback Query를 수행할것인지 UNDO_RETENTION 파라미터를 설정해야 한다. | 2. 이전의 어느 시점까지의 언두(UNDO)정보를 보유하여 Flashback Query를 수행할것인지 UNDO_RETENTION 파라미터를 설정해야 한다. | ||
− | + | <source> | |
+ | ALTER SYSTEM SET UNDO_RETENTION=1200 | ||
+ | </source> | ||
설정 확인 => | 설정 확인 => | ||
31번째 줄: | 34번째 줄: | ||
SQL | SQL | ||
</source> | </source> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
※ 사용자 | ※ 사용자 | ||
− | |||
− | |||
− | |||
Flashback 기능을 이용하기 위해서 DBMS_FLASHBACK 패키지에 대한 EXECUTE권한이 있어야 합니다. | Flashback 기능을 이용하기 위해서 DBMS_FLASHBACK 패키지에 대한 EXECUTE권한이 있어야 합니다. | ||
− | |||
− | |||
− | |||
− | |||
▶ Flashback을 사용할 수 있는 조건 | ▶ Flashback을 사용할 수 있는 조건 | ||
− | |||
− | |||
− | |||
하지만 모두 복구 할 수 있는 것은 아니다. | 하지만 모두 복구 할 수 있는 것은 아니다. | ||
− | |||
− | |||
오라클은 데이터를 FLASHBACK이라는 임시 저장소에 가지고 있는다. | 오라클은 데이터를 FLASHBACK이라는 임시 저장소에 가지고 있는다. | ||
− | |||
자료가 쌓이는 로그이다. 그렇기 때문에 일정시간 이내의 자료들은 어느정도 복구 가능하다. | 자료가 쌓이는 로그이다. 그렇기 때문에 일정시간 이내의 자료들은 어느정도 복구 가능하다. | ||
− | |||
시스템의 설정, 버퍼의 크기에 따라 복구 할 수 있는 시간은 제한적 이다. (오라클 서버의 메모리 세팅에 따라 달라진다.) | 시스템의 설정, 버퍼의 크기에 따라 복구 할 수 있는 시간은 제한적 이다. (오라클 서버의 메모리 세팅에 따라 달라진다.) | ||
− | |||
− | |||
+ | '''또한 제약조건이 추가되거나 컬림이 추가 된 경우, DROP한 후 PURGE한 경우 복원할 수 없다.''' | ||
− | |||
▶ 테이블 | ▶ 테이블 | ||
+ | <source lang=sql> | ||
SELECT * | SELECT * | ||
− | FROM [TABLE 명] AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '수치' 단위) | + | FROM [TABLE 명] AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '수치' 단위) |
WHERE [조회조건] | WHERE [조회조건] | ||
− | + | </source> | |
76번째 줄: | 59번째 줄: | ||
▶ 프로시저 | ▶ 프로시저 | ||
+ | <source lang=sql> | ||
SELECT * | SELECT * | ||
FROM DBA_SOURCE AS OF TIMESTAMP (SYSTIMESTAMP-INTERVAL '수치' 단위) | FROM DBA_SOURCE AS OF TIMESTAMP (SYSTIMESTAMP-INTERVAL '수치' 단위) | ||
WHERE NAME = '프로시저이름' | WHERE NAME = '프로시저이름' | ||
− | + | </source> | |
87번째 줄: | 71번째 줄: | ||
▶ EX) | ▶ EX) | ||
− | + | <source lang=sql> | |
SELECT * | SELECT * | ||
FROM TEST_TABLE AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '20' MINUTE) | FROM TEST_TABLE AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '20' MINUTE) | ||
WHERE COMPANY = 'SK' | WHERE COMPANY = 'SK' | ||
− | + | </source> | |
− | |||
− | |||
− | |||
테이블명과 조건을 입력하고 조회화면 20분 이전의 데이터가 조회된다. | 테이블명과 조건을 입력하고 조회화면 20분 이전의 데이터가 조회된다. | ||
− | |||
− | |||
단위는 SECOND, MINUTE, HOUR, DAY로 바꿔 쓸 수 있다. | 단위는 SECOND, MINUTE, HOUR, DAY로 바꿔 쓸 수 있다. | ||
− | |||
오라클 9i(RELEASE 2이상) 이후부터 지원한다. | 오라클 9i(RELEASE 2이상) 이후부터 지원한다. | ||
− | |||
− | |||
− | |||
− |
2019년 1월 24일 (목) 08:03 판
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
[Oracle| 오라클 데이터 복구 (TIMESTAMP)
데이터를 실수로 삭제(delete, truncate는 불가) 하고 commit하였을때 실수로 지운다던지, 복원을 시켜야 한다던지 당황하고 멘붕이 왔던 경험이 많을 것이다.
이때 특정시간 또는 시점으로 되돌릴 수 있는 기능이 Oracle Flashback 기능이다. 이 플래시백 기능을 통해 as of timestamp 구문을 사용하여 삭제 전의 데이터를 조회하여 복구 할 수 있다.
▶ Flashback을 사용할 수 있는 조건
※ 설정
1. 자동 언두 관리 시스템을 사용해야 합니다. (UNDO_MANAGEMENT 파라미터를 AUTO로 설정)
UNDO_MANAGEMENT = AUTO
2. 이전의 어느 시점까지의 언두(UNDO)정보를 보유하여 Flashback Query를 수행할것인지 UNDO_RETENTION 파라미터를 설정해야 한다.
ALTER SYSTEM SET UNDO_RETENTION=1200
설정 확인 =>
show paramter undo;
NAME TYPE
-----------------------------------------------
VALUE
------------------------
undo_management string
auto
auto_retention integer
1200
UNDOTBS1
SQL
※ 사용자 Flashback 기능을 이용하기 위해서 DBMS_FLASHBACK 패키지에 대한 EXECUTE권한이 있어야 합니다.
▶ Flashback을 사용할 수 있는 조건 하지만 모두 복구 할 수 있는 것은 아니다.
오라클은 데이터를 FLASHBACK이라는 임시 저장소에 가지고 있는다. 자료가 쌓이는 로그이다. 그렇기 때문에 일정시간 이내의 자료들은 어느정도 복구 가능하다. 시스템의 설정, 버퍼의 크기에 따라 복구 할 수 있는 시간은 제한적 이다. (오라클 서버의 메모리 세팅에 따라 달라진다.)
또한 제약조건이 추가되거나 컬림이 추가 된 경우, DROP한 후 PURGE한 경우 복원할 수 없다.
▶ 테이블
SELECT *
FROM [TABLE 명] AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '수치' 단위)
WHERE [조회조건]
▶ 프로시저
SELECT *
FROM DBA_SOURCE AS OF TIMESTAMP (SYSTIMESTAMP-INTERVAL '수치' 단위)
WHERE NAME = '프로시저이름'
▶ EX)
SELECT *
FROM TEST_TABLE AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '20' MINUTE)
WHERE COMPANY = 'SK'
테이블명과 조건을 입력하고 조회화면 20분 이전의 데이터가 조회된다. 단위는 SECOND, MINUTE, HOUR, DAY로 바꿔 쓸 수 있다.
오라클 9i(RELEASE 2이상) 이후부터 지원한다.