728x90
expdp로 데이터를 내보낼 때, 데이터의 크기가 크면 오랜 시간이 소요된다. 시작하고 끝나기 까지의 시간이 1시간이라고 할 때, 그동안 데이터에 변화가 생긴다면 어떻게 반영이 될까? 일관되게 고정할 수 있을까? 찾아본 결과 다음과 같다.
기본적으로 expdp 유틸리티로 export를 하게 되면 테이블별로만 일관성이 있다. export 하는 모든 테이블이 동일한 시점으로 일관되게 하려면 FLASHBACK_SCN 또는 FLASHBACK_TIME 매개변수를 사용해야 한다.
FLASHBACK_TIME 매개변수 값은 지정된 시간 동안 대략적인 SCN으로 변환된다.
expdp ..... flashback_time=systimestamp
# In parameter file.
flashback_time="to_timestamp('09-05-2011 09:00:00', 'DD-MM-YYYY HH24:MI:SS')"
# Escaped on command line.
expdp ..... flashback_time=\"to_timestamp\(\'09-05-2011 09:00:00\', \'DD-MM-YYYY HH24:MI:SS\'\)\"
당연하게도 export 작업 중에 데이터의 일관된 read view를 유지하기에 충분한 UNDO 공간이 있는 경우,
이전 시간 또는 SCN을 지정하여 export를 이전 시점과 일관되게 만들 수 있다.
SCN을 사용하려는 경우 다음 쿼리 중 하나를 사용하여 현재 SCN을 검색할 수 있다.
SELECT current_scn FROM v$database;
SELECT DBMS_FLASHBACK.get_system_change_number FROM dual;
SELECT TIMESTAMP_TO_SCN(SYSTIMESTAMP) FROM dual;
위 쿼리의 결과로 나온 SCN 값을 다음과 같이 FLASHBACK_SCN 파라미터로 넣어준다.
expdp ..... flashback_scn=5474280
다음 쿼리를 이용하여 타임스탬프를 SCN로, SCN를 타임스탬프로 변환할 수 있다.
SELECT TIMESTAMP_TO_SCN(SYSTIMESTAMP) FROM dual;
SELECT SCN_TO_TIMESTAMP(5474751) FROM dual;
이와 같이 expdp 실행시 FLASHBACK_SCN 또는 FLASHBACK_TIME 옵션을 주어 시점을 일치시킬 수 있다.
참고
728x90
'Dev > Oracle' 카테고리의 다른 글
[Oracle] RMAN 특정 테이블 스페이스 제외하고 복구 (0) | 2022.10.18 |
---|---|
[Oracle] Memory Notification: Library Cache Object loaded into SGA (0) | 2022.09.21 |
[Oracle] RMAN backup - 특정 테이블 스페이스 제외 (0) | 2022.09.02 |
[Oracle] TNS-12537: TNS:connection closed (1) | 2022.09.01 |
[Oracle] Crontab 스크립트가 작동하지 않을 때 (0) | 2022.08.31 |
댓글