Akashic Records

아카이브 로그로 복구 할때 특정 시점까지 지정할수 있나? 본문

Database Learning Guide

아카이브 로그로 복구 할때 특정 시점까지 지정할수 있나?

Andrew's Akashic Records 2023. 3. 3. 14:47
728x90

네, 오라클 데이터베이스에서 아카이브 로그를 이용하여 데이터 복구를 할 때, 특정 시점까지 복구할 수 있습니다. 이를 point-in-time recovery (PITR)라고 합니다.

PITR은 일반적으로 특정 시간 또는 특정 SCN(System Change Number)까지 데이터베이스를 복구하는 것을 의미합니다. SCN은 오라클에서 사용되는 고유한 숫자이며, 데이터베이스의 특정 시점을 식별하는 데 사용됩니다.

아카이브 로그를 사용하여 PITR을 수행하려면 다음과 같은 단계를 수행해야 합니다.

복구할 시점 결정: 복구할 시점을 SCN 또는 시간으로 결정합니다.

필요한 아카이브 로그 찾기: 복구할 시점까지의 아카이브 로그를 찾습니다.

데이터베이스 복구: 찾은 아카이브 로그를 사용하여 데이터베이스를 복구합니다.

온라인 복구: 데이터베이스를 온라인으로 복구합니다.

 

아래는 간단한 예시 코드입니다.

RECOVER DATABASE UNTIL SCN <SCN_NUMBER>;

위의 코드에서 SCN_NUMBER 부분에는 복구할 시점의 SCN 값을 입력합니다. SCN 대신 시간 값을 사용할 수도 있습니다. SCN 값은 데이터베이스에서 직접 조회할 수 있으며, 다음 쿼리를 사용할 수 있습니다.

SELECT CURRENT_SCN FROM V$DATABASE;

위의 쿼리는 현재 SCN 값을 반환합니다. 이 값을 사용하여 PITR을 수행할 수 있습니다.

오라클 데이터베이스에서 특정시점의 SCN 값을 찾기

Oracle 데이터베이스에서 특정 시점의 SCN(System Change Number) 값을 찾기 위해서는 다음과 같은 SQL 쿼리를 실행할 수 있습니다.

SELECT SCN_TO_TIMESTAMP(SCN) AS TIME, SCN
FROM V$DATABASE
WHERE SCN BETWEEN MINVALUE AND MAXVALUE AND
      TIMESTAMP BETWEEN TO_TIMESTAMP('YYYY-MM-DD HH24:MI:SS', 'Timezone') AND TO_TIMESTAMP('YYYY-MM-DD HH24:MI:SS', 'Timezone');

위 쿼리에서 MINVALUE 및 MAXVALUE는 현재 데이터베이스 인스턴스에서 사용 가능한 최소 및 최대 SCN 값입니다. Timezone은 원하는 시간대로 대체되어야 합니다. TO_TIMESTAMP() 함수의 두 번째 인수는 형식을 지정합니다. 예를 들어, '2022-02-21 10:30:00', 'Asia/Seoul'을 사용하여 한국 표준시 2022년 2월 21일 10시 30분을 나타냅니다.

위 쿼리를 실행하면 시간과 해당 SCN 값이 표시됩니다. 이를 통해 SCN 값을 찾을 수 있습니다.

728x90
Comments