"오라클 데이터 복구"의 두 판 사이의 차이
DB CAFE
(→오라클 데이터 복구 FlashBack TIMESTAMP 이용) |
|||
1번째 줄: | 1번째 줄: | ||
== 오라클 데이터 복구 FlashBack TIMESTAMP 이용 == | == 오라클 데이터 복구 FlashBack TIMESTAMP 이용 == | ||
− | 데이터를 실수로 삭제( | + | 데이터를 실수로 삭제(truncate는 복구 불가) 할 경우 |
− | + | 특정시간 또는 시점으로 되돌릴 수 있는 기능이 Oracle Flashback 기능이다. | |
− | |||
이 플래시백 기능을 통해 as of timestamp 구문을 사용하여 삭제 전의 데이터를 조회하여 복구 할 수 있다. | 이 플래시백 기능을 통해 as of timestamp 구문을 사용하여 삭제 전의 데이터를 조회하여 복구 할 수 있다. | ||
− | + | === FLASHBACK 설정 조건 === | |
− | + | 1. 자동 언두 관리 시스템을 사용(UNDO_MANAGEMENT 파라미터를 AUTO로 설정) | |
− | |||
− | 1. 자동 언두 관리 시스템을 | ||
<source lang=sql> | <source lang=sql> | ||
UNDO_MANAGEMENT = AUTO | UNDO_MANAGEMENT = AUTO | ||
</source> | </source> | ||
− | 2. 이전의 어느 시점까지의 언두(UNDO)정보를 보유하여 Flashback Query를 수행할것인지 UNDO_RETENTION 파라미터를 | + | |
− | <source> | + | 2. 이전의 어느 시점까지의 언두(UNDO)정보를 보유하여 Flashback Query를 수행할것인지 UNDO_RETENTION 파라미터를 설정. |
+ | <source lang=sql> | ||
ALTER SYSTEM SET UNDO_RETENTION=1200 | ALTER SYSTEM SET UNDO_RETENTION=1200 | ||
</source> | </source> | ||
− | 설정 확인 | + | 설정 확인 SQL |
<source lang=sql> | <source lang=sql> | ||
show paramter undo; | show paramter undo; | ||
35번째 줄: | 33번째 줄: | ||
</source> | </source> | ||
− | ※ 사용자 | + | ※ 사용자 권한 |
− | Flashback 기능을 이용하기 위해서 DBMS_FLASHBACK 패키지에 대한 | + | Flashback 기능을 이용하기 위해서 DBMS_FLASHBACK 패키지에 대한 EXECUTE권한 필요. |
▶ Flashback을 사용할 수 있는 조건 | ▶ Flashback을 사용할 수 있는 조건 | ||
− | + | 모두 복구 할 수 있는 것은 아님. | |
+ | 시스템의 설정, 버퍼의 크기에 따라 복구 할 수 있는 시간은 제한적 이다. (오라클 서버의 메모리 세팅.) | ||
+ | '''제약조건이 추가되거나 컬림이 추가 된 경우, DROP한 후 PURGE한 경우 복원할 수 없다.''' | ||
− | + | ▶ 테이블 | |
− | + | * 10 분전 데이터 조회 | |
− | + | <source lang=sql> | |
+ | SELECT * | ||
+ | FROM [TABLE 명] AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE) -- 단위는 SECOND, MINUTE, HOUR, DAY | ||
+ | WHERE [조회조건] | ||
+ | </source> | ||
− | + | * 10 분전 데이터 조회 후 입력 | |
− | |||
− | |||
<source lang=sql> | <source lang=sql> | ||
+ | INSERT INTO TB_XXX | ||
SELECT * | SELECT * | ||
− | FROM [TABLE 명] AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL ' | + | FROM [TABLE 명] AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE) -- 단위는 SECOND, MINUTE, HOUR, DAY |
WHERE [조회조건] | WHERE [조회조건] | ||
</source> | </source> | ||
− | + | ||
+ | * 다른 테이블명으로 복구 | ||
+ | <source lang=sql> | ||
+ | FLASHBACK TABLE EMP.XTB_EVN | ||
+ | TO BEFORE DROP | ||
+ | RENAME TO EMP.XTB_EVN_COPY; | ||
+ | </source> | ||
+ | |||
+ | * 이전테이블로 복구 | ||
+ | <source lang=sql> | ||
+ | FLASHBACK TABLE RTIS_DEV.XTB | ||
+ | TO BEFORE DROP; | ||
+ | |||
+ | FLASHBACK TABLE "BIN$hAmsdSFUTtrgUwEAAH8yIQ==$0" | ||
+ | TO BEFORE DROP; | ||
+ | </source> | ||
+ | ▶ 인덱스 | ||
+ | ALTER INDEX "BIN$UofUBMjYnkDgUOABLqNFXg==$0" | ||
+ | RENAME TO PK_TB_USER_INFO; | ||
▶ 프로시저 | ▶ 프로시저 | ||
<source lang=sql> | <source lang=sql> | ||
SELECT * | SELECT * | ||
− | FROM DBA_SOURCE AS OF TIMESTAMP (SYSTIMESTAMP-INTERVAL '수치' 단위) | + | FROM DBA_SOURCE AS OF TIMESTAMP (SYSTIMESTAMP-INTERVAL '수치' 단위) -- 단위는 SECOND, MINUTE, HOUR, DAY |
− | WHERE NAME = '프로시저이름' | + | WHERE NAME = '프로시저이름' |
</source> | </source> | ||
− | |||
− | |||
▶ EX) | ▶ EX) | ||
<source lang=sql> | <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) -- 단위는 SECOND, MINUTE, HOUR, DAY |
WHERE COMPANY = 'SK' | WHERE COMPANY = 'SK' | ||
</source> | </source> | ||
테이블명과 조건을 입력하고 조회화면 20분 이전의 데이터가 조회된다. | 테이블명과 조건을 입력하고 조회화면 20분 이전의 데이터가 조회된다. | ||
− | |||
---- | ---- | ||
79번째 줄: | 97번째 줄: | ||
== FLASHBACK 명령 이용 복구 == | == FLASHBACK 명령 이용 복구 == | ||
− | === 휴지통 조회 === | + | === 휴지통(RECYCLEBIN) 조회 === |
-- 사용자 휴지통 조회 | -- 사용자 휴지통 조회 | ||
86번째 줄: | 104번째 줄: | ||
FROM RECYCLEBIN ; | FROM RECYCLEBIN ; | ||
</source> | </source> | ||
+ | |||
-- DBA권한 전체휴지통 조회 | -- DBA권한 전체휴지통 조회 | ||
<source lang=sql> | <source lang=sql> | ||
102번째 줄: | 121번째 줄: | ||
WHERE A.ORIGINAL_NAME LIKE 'XTB' | WHERE A.ORIGINAL_NAME LIKE 'XTB' | ||
; | ; | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</source> | </source> |
2019년 9월 26일 (목) 15:00 판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
1 오라클 데이터 복구 FlashBack TIMESTAMP 이용[편집]
데이터를 실수로 삭제(truncate는 복구 불가) 할 경우 특정시간 또는 시점으로 되돌릴 수 있는 기능이 Oracle Flashback 기능이다.
이 플래시백 기능을 통해 as of timestamp 구문을 사용하여 삭제 전의 데이터를 조회하여 복구 할 수 있다.
1.1 FLASHBACK 설정 조건[편집]
1. 자동 언두 관리 시스템을 사용(UNDO_MANAGEMENT 파라미터를 AUTO로 설정)
UNDO_MANAGEMENT = AUTO
2. 이전의 어느 시점까지의 언두(UNDO)정보를 보유하여 Flashback Query를 수행할것인지 UNDO_RETENTION 파라미터를 설정.
ALTER SYSTEM SET UNDO_RETENTION=1200
설정 확인 SQL
show paramter undo;
NAME TYPE
-----------------------------------------------
VALUE
------------------------
undo_management string
auto
auto_retention integer
1200
UNDOTBS1
SQL
※ 사용자 권한 Flashback 기능을 이용하기 위해서 DBMS_FLASHBACK 패키지에 대한 EXECUTE권한 필요.
▶ Flashback을 사용할 수 있는 조건 모두 복구 할 수 있는 것은 아님. 시스템의 설정, 버퍼의 크기에 따라 복구 할 수 있는 시간은 제한적 이다. (오라클 서버의 메모리 세팅.) 제약조건이 추가되거나 컬림이 추가 된 경우, DROP한 후 PURGE한 경우 복원할 수 없다.
▶ 테이블
- 10 분전 데이터 조회
SELECT *
FROM [TABLE 명] AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE) -- 단위는 SECOND, MINUTE, HOUR, DAY
WHERE [조회조건]
- 10 분전 데이터 조회 후 입력
INSERT INTO TB_XXX
SELECT *
FROM [TABLE 명] AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE) -- 단위는 SECOND, MINUTE, HOUR, DAY
WHERE [조회조건]
- 다른 테이블명으로 복구
FLASHBACK TABLE EMP.XTB_EVN
TO BEFORE DROP
RENAME TO EMP.XTB_EVN_COPY;
- 이전테이블로 복구
FLASHBACK TABLE RTIS_DEV.XTB
TO BEFORE DROP;
FLASHBACK TABLE "BIN$hAmsdSFUTtrgUwEAAH8yIQ==$0"
TO BEFORE DROP;
▶ 인덱스
ALTER INDEX "BIN$UofUBMjYnkDgUOABLqNFXg==$0" RENAME TO PK_TB_USER_INFO;
▶ 프로시저
SELECT *
FROM DBA_SOURCE AS OF TIMESTAMP (SYSTIMESTAMP-INTERVAL '수치' 단위) -- 단위는 SECOND, MINUTE, HOUR, DAY
WHERE NAME = '프로시저이름'
▶ EX)
SELECT *
FROM TEST_TABLE AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '20' MINUTE) -- 단위는 SECOND, MINUTE, HOUR, DAY
WHERE COMPANY = 'SK'
테이블명과 조건을 입력하고 조회화면 20분 이전의 데이터가 조회된다.
2 FLASHBACK 명령 이용 복구[편집]
2.1 휴지통(RECYCLEBIN) 조회[편집]
-- 사용자 휴지통 조회
SELECT OBJECT_NAME, ORIGINAL_NAME, CREATETIME
FROM RECYCLEBIN ;
-- DBA권한 전체휴지통 조회
SELECT *
FROM DBA_RECYCLEBIN A
WHERE A.ORIGINAL_NAME LIKE 'XTB'
;
-- 삭제된 오브젝트로 조회
SELECT *
FROM "BIN$Ulu8B5c+Oz3gUOABLqObkg==$0";
SELECT *
FROM DBA_RECYCLEBIN A
WHERE A.ORIGINAL_NAME LIKE 'XTB'
;