Akashic Records

Explain Oracle database recover 본문

Database Learning Guide

Explain Oracle database recover

Andrew's Akashic Records 2023. 3. 13. 15:02
728x90

오라클 데이터베이스 복구 방법은 크게 두 가지로 나눌 수 있습니다. 하나는 미디어 복구(Media Recovery)로 데이터베이스가 완전히 손상되었을 때 수행하는 복구 방법이고, 다른 하나는 포인트-인-타임 복구(Point-in-Time Recovery)로 일부 손상된 데이터베이스를 특정 시점으로 복구하는 방법입니다.

1. 미디어 복구

미디어 복구는 데이터베이스가 완전히 손상된 경우에 수행됩니다. 이 경우 백업 파일과 아카이브 로그 파일을 사용하여 데이터 파일을 복원하고, 손실된 데이터를 복구합니다. 미디어 복구에는 전체 복구(Full Recovery)와 증분 복구(Incremental Recovery)가 있습니다.

 

전체 복구(Full Recovery)

전체 복구는 데이터베이스가 완전히 손상되었을 때 사용하는 복구 방법입니다. 전체 복구를 수행하기 위해서는 데이터 파일과 아카이브 로그 파일이 필요합니다.

 

전체 복구는 다음과 같은 단계로 수행됩니다.

 

- 데이터 파일 복원

전체 복구를 수행하기 위해서는 데이터 파일의 백업 파일이 필요합니다. 백업 파일을 사용하여 데이터 파일을 복원합니다.

- 아카이브 로그 적용

데이터 파일 복원이 완료되면, 아카이브 로그 파일을 사용하여 데이터 파일을 복구합니다. 아카이브 로그 파일은 데이터 파일이 백업된 이후에 발생한 변경 내용을 포함합니다.

- 데이터베이스 열기

데이터 파일의 복원과 아카이브 로그 파일의 적용이 완료되면, 데이터베이스를 열어서 사용할 수 있도록 합니다.

증분 복구(Incremental Recovery)

증분 복구는 데이터베이스가 일부 손상된 경우에 사용하는 복구 방법입니다. 전체 복구와 마찬가지로 데이터 파일과 아카이브 로그 파일이 필요합니다.

 

증분 복구는 다음과 같은 단계로 수행됩니다.

 

- 데이터 파일 복원

증분 복구를 수행하기 위해서는 이전 백업 파일과 현재 손상된 데이터 파일이 필요합니다. 이전 백업 파일을 사용하여 데이터 파일을 복원하고, 이후 아카이브 로그 파일을 사용하여 손상된 부분을 복구합니다.

 

- 아카이브 로그 적용
데이터 파일 복원이 완료되면, 아카이브 로그 파일을 사용하여 손상된 부분을 복구합니다.

 

- 데이터베이스 열기

데이터 파일의 복원과 아카이브 로그 파일의 적용이 완료되면, 데이터베이스를 열어서 사용할 수 있도록 합니다.

 

전체 복구와 증분 복구는 데이터베이스 손상의 정도에 따라 다르게 사용됩니다. 전체 복구는 데이터베이스가 완전히 손상된 경우에 사용되며, 증분 복구는 데이터베이스가 일부 손상된 경우에 사용됩니다. 이러한 복구 방법을 효율적으로 사용하기 위해서는 규칙적인 백업과 복구 테스트를 수행하는 것이 중요합니다. 이를 통해 백업 파일과 아카이브 로그 파일의 정확성을 검증하고, 데이터 손상 및 오류를 최소화할 수 있습니다.

 

전체 복구와 증분 복구 모두 RMAN을 사용하여 수행할 수 있습니다. RMAN은 Oracle 데이터베이스의 백업 및 복구를 위해 제공되는 도구로, 데이터베이스 복구 작업을 자동화하고 단순화하는 데 매우 유용합니다. RMAN은 백업 파일과 아카이브 로그 파일을 이용하여 데이터 파일을 복구하는 작업을 자동으로 수행하므로, 복잡한 복구 과정을 단순화하고 시간을 절약할 수 있습니다.


데이터베이스 복구는 데이터베이스 운영 중 매우 중요한 작업입니다. 데이터 손상 및 오류가 발생했을 때 빠르고 안정적인 복구를 위해서는 규칙적인 백업 및 복구 테스트를 수행하고, RMAN과 같은 데이터베이스 복구 도구를 적극적으로 활용하는 것이 좋습니다. 이를 통해 데이터 손상 및 오류를 최소화하고 안정적인 데이터베이스 운영을 유지할 수 있습니다.

 

2. 포인트-인-타임 복구

포인트-인-타임 복구(Point-in-Time Recovery)는 Oracle 데이터베이스의 특정 시점으로 복구하는 방법입니다. 예를 들어, 데이터베이스가 오늘 아침 10시에 손상되었다면, 포인트-인-타임 복구를 통해 10시 이전의 상태로 데이터베이스를 복구할 수 있습니다.

 

포인트-인-타임 복구를 수행하기 위해서는 백업 파일과 아카이브 로그 파일이 필요합니다. 포인트-인-타임 복구를 수행하려는 시점 이전의 백업 파일과, 해당 시점 이후의 아카이브 로그 파일이 필요합니다.

 

포인트-인-타임 복구는 다음과 같은 단계로 수행됩니다.

 

- 데이터 파일 복원

먼저, 데이터베이스를 복구하려는 시점 이전의 백업 파일을 사용하여 데이터 파일을 복원합니다.

 

- 아카이브 로그 적용

데이터 파일 복원이 완료되면, 해당 시점 이후의 아카이브 로그 파일을 적용하여 데이터 파일을 복구합니다.

 

- 데이터베이스 열기

데이터 파일의 복원과 아카이브 로그 파일의 적용이 완료되면, 데이터베이스를 열어서 사용할 수 있도록 합니다.

 

포인트-인-타임 복구는 Oracle 데이터베이스의 복구 기능 중 하나로, 데이터베이스가 손상되었을 때 빠르고 안정적인 복구를 위해 매우 유용합니다. 하지만, 해당 시점 이전의 백업 파일과 해당 시점 이후의 아카이브 로그 파일이 모두 필요하므로, 이를 주의해서 보관하고 관리해야 합니다.

 

데이터베이스 복구는 데이터베이스 운영 중 가장 중요한 작업 중 하나입니다. 포인트-인-타임 복구를 비롯한 다양한 복구 방법을 활용하여 데이터 손상 및 오류를 최소화하고, 안정적인 데이터베이스 운영을 유지하는 것이 중요합니다.


Oracle Full Recovery

전체 복구를 수행하기 위해 RMAN을 사용하는 방법은 다음과 같습니다.

 

1. RMAN 실행
RMAN을 실행합니다. 예를 들어, 다음과 같은 명령을 사용하여 RMAN을 실행할 수 있습니다.

rman target /

 

2. 데이터 파일 복원

데이터 파일을 복원하기 위해 RESTORE DATABASE 명령을 사용합니다. 이 명령은 이전에 수행한 전체 데이터베이스 백업 파일을 사용하여 데이터 파일을 복원합니다. 예를 들어, 다음과 같은 명령을 사용하여 데이터 파일을 복원할 수 있습니다.

RESTORE DATABASE;

 

3. 아카이브 로그 적용

데이터 파일 복원이 완료되면, 아카이브 로그를 사용하여 데이터 파일을 복구합니다. 데이터 파일이 복구되기 이전에 기록된 모든 변경 내용을 포함하는 아카이브 로그 파일을 적용합니다. 이를 위해 RECOVER DATABASE 명령을 사용합니다. 예를 들어, 다음과 같은 명령을 사용하여 아카이브 로그를 적용할 수 있습니다.

RECOVER DATABASE;

 

4. 데이터베이스 열기
데이터 파일의 복원과 아카이브 로그 파일의 적용이 완료되면, 데이터베이스를 열어서 사용할 수 있도록 합니다. 이를 위해 OPEN DATABASE 명령을 사용합니다. 예를 들어, 다음과 같은 명령을 사용하여 데이터베이스를 열 수 있습니다.

ALTER DATABASE OPEN;

 

전체 복구는 데이터베이스가 손상된 경우에 사용되며, 전체 복구를 수행하려면 RMAN을 사용하는 것이 좋습니다. RMAN을 사용하면 데이터베이스 전체 복구 프로세스를 자동화하고, 복잡한 복구 과정을 단순화할 수 있습니다. RMAN을 사용하여 데이터베이스 전체 복구를 수행하는 경우, 위와 같은 단계를 수행하면 됩니다.

 

Oracle 데이터베이스 전체 복구를 수행하는 다른 방법은 데이터베이스의 덤프 파일을 사용하는 것입니다. 덤프 파일은 데이터베이스에서 데이터를 추출하는 데 사용되며, 데이터베이스 전체 복구를 수행하는 데 사용될 수 있습니다.

 

다음은 덤프 파일을 사용하여 데이터베이스 전체 복구를 수행하는 방법입니다.

 

1. 데이터베이스 중지

먼저, 데이터베이스를 중지해야 합니다. 이를 위해 SQL*Plus 또는 SQL Developer와 같은 Oracle 클라이언트를 사용하여 다음과 같은 명령을 실행합니다.

SHUTDOWN IMMEDIATE;

 

2. 덤프 파일 가져오기

덤프 파일을 가져와서 데이터베이스를 복원합니다. 이를 위해, impdp 유틸리티를 사용하여 덤프 파일을 가져옵니다. 예를 들어, 다음과 같은 명령을 사용하여 덤프 파일을 가져올 수 있습니다.

impdp system/password@dbname full=Y directory=dir_name dumpfile=full_dump.dmp

이 명령은 full_dump.dmp 덤프 파일에서 데이터베이스를 복원하며, dir_name은 덤프 파일이 저장된 디렉토리입니다.

 

3. 데이터베이스 열기

덤프 파일을 사용하여 데이터베이스를 복원한 후, 데이터베이스를 열어서 사용할 수 있도록 합니다. 이를 위해 SQL*Plus 또는 SQL Developer와 같은 Oracle 클라이언트를 사용하여 다음과 같은 명령을 실행합니다.

STARTUP;

덤프 파일을 사용하여 데이터베이스 전체 복구를 수행하는 경우, 데이터베이스가 중지된 상태에서 복구를 수행할 수 있습니다. 그러나 이 방법은 RMAN을 사용하여 데이터베이스를 복원하는 것보다 복잡하며, 시간이 더 오래 걸릴 수 있습니다. 따라서, RMAN을 사용하여 데이터베이스 전체 복구를 수행하는 것이 권장됩니다.


Oracle Incremental Recovery

Oracle 데이터베이스의 Incremental Recovery는 이전에 백업된 데이터베이스의 부분적인 복구를 수행할 수 있도록 합니다. 이를 위해 백업 파일과 아카이브 로그 파일을 사용하여 데이터베이스를 복구합니다.

다음은 Incremental Recovery를 수행하는 방법의 예시입니다.

1. RMAN 실행
RMAN을 실행합니다. 예를 들어, 다음과 같은 명령을 사용하여 RMAN을 실행할 수 있습니다.

rman target /

 

2. 백업 파일 및 아카이브 로그 확인

Incremental Recovery를 수행하기 위해 복구할 백업 파일과 아카이브 로그 파일을 확인합니다. 이를 위해 다음과 같은 명령을 사용할 수 있습니다.

LIST BACKUP; 
LIST ARCHIVELOG ALL;

 

3. 데이터 파일 복원
데이터 파일을 복원하기 위해 RESTORE DATABASE 명령을 사용합니다. 이 명령은 이전에 수행한 전체 데이터베이스 백업 파일을 사용하여 데이터 파일을 복원합니다. 예를 들어, 다음과 같은 명령을 사용하여 데이터 파일을 복원할 수 있습니다.

RESTORE DATABASE;

 

4. 아카이브 로그 적용
데이터 파일 복원이 완료되면, 아카이브 로그를 사용하여 데이터 파일을 복구합니다. 데이터 파일이 복구되기 이전에 기록된 모든 변경 내용을 포함하는 아카이브 로그 파일을 적용합니다. 이를 위해 RECOVER DATABASE 명령을 사용합니다. 예를 들어, 다음과 같은 명령을 사용하여 아카이브 로그를 적용할 수 있습니다.

RECOVER DATABASE;

 

5. Incremental Recovery 적용
Incremental Recovery를 적용하여 데이터 파일의 일부를 복구합니다. 이를 위해 RECOVER DATABASE 명령을 사용하고, SET UNTIL 명령을 사용하여 특정 시점까지의 데이터 파일을 복구합니다. 예를 들어, 다음과 같은 명령을 사용하여 Incremental Recovery를 적용할 수 있습니다.

RECOVER DATABASE UNTIL TIME 'SYSDATE-7';

이 명령은 현재 시간으로부터 일주일 전까지 변경된 데이터를 복구합니다.

 

6. 데이터베이스 열기
데이터 파일의 복원과 아카이브 로그 파일의 적용이 완료되면, 데이터베이스를 열어서 사용할 수 있도록 합니다. 이를 위해 OPEN DATABASE 명령을 사용합니다. 예를 들어, 다음과 같은 명령을 사용하여 데이터베이스를 열 수 있습니다.

 

ALTER DATABASE OPEN;

 

Incremental Recovery는 이전에 백업된 데이터베이스의 부분적인 복구를 수행하는 방법이므로, 일반적으로 전체 데이터베이스 복구보다 더 빠르고 효율적입니다. Incremental Backup을 수행한 후, 이전에 수행한 백업 파일과 함께 아카이브 로그 파일을 사용하여 복구를 수행할 수 있습니다.

다음은 Incremental Recovery를 수행하는 또 다른 방법의 예시입니다.

1. RMAN 실행

RMAN을 실행합니다. 예를 들어, 다음과 같은 명령을 사용하여 RMAN을 실행할 수 있습니다.

rman target /

 

2. 백업 파일 및 아카이브 로그 확인

Incremental Recovery를 수행하기 위해 복구할 백업 파일과 아카이브 로그 파일을 확인합니다. 이를 위해 다음과 같은 명령을 사용할 수 있습니다.

LIST BACKUP; 
LIST ARCHIVELOG ALL;

 

3. 데이터 파일 복원
데이터 파일을 복원하기 위해 RESTORE DATABASE 명령을 사용합니다. 이 명령은 이전에 수행한 전체 데이터베이스 백업 파일을 사용하여 데이터 파일을 복원합니다. 예를 들어, 다음과 같은 명령을 사용하여 데이터 파일을 복원할 수 있습니다.

RESTORE DATABASE;

 

4. 아카이브 로그 적용
데이터 파일 복원이 완료되면, 아카이브 로그를 사용하여 데이터 파일을 복구합니다. 데이터 파일이 복구되기 이전에 기록된 모든 변경 내용을 포함하는 아카이브 로그 파일을 적용합니다. 이를 위해 RECOVER DATABASE 명령을 사용합니다. 예를 들어, 다음과 같은 명령을 사용하여 아카이브 로그를 적용할 수 있습니다.

RECOVER DATABASE;

 

5. Incremental Backup 적용

Incremental Backup을 적용하여 데이터 파일의 일부를 복구합니다. 이를 위해 RESTORE DATABASE 명령을 사용하고, RECOVER DATABASE 명령을 사용하여 변경된 데이터를 복구합니다. 이 때, SET UNTIL 명령을 사용하여 마지막 Incremental Backup 이후에 변경된 데이터를 복구합니다. 예를 들어, 다음과 같은 명령을 사용하여 Incremental Backup을

적용할 수 있습니다.

RESTORE DATABASE; 
RECOVER DATABASE UNTIL SCN 12345;

이 명령은 SCN 12345 이후에 변경된 데이터를 복구합니다.

6k. 데이터베이스 열기
데이터 파일의 복원과 아카이브 로그 파일의 적용이 완료되면, 데이터베이스를 열어서 사용할 수 있도록 합니다. 이를 위해 OPEN DATABASE 명령을 사용합니다. 예를들어, 다음과 같은 명령을 사용하여 데이터베이스를 열 수 있습니다.

ALTER DATABASE OPEN;

 

Incremental Recovery는 이전에 수행한 백업 파일과 함께 변경된 데이터만 복구하여 데이터베이스 복구 시간을 단축시킬 수 있습니다. 또한, Incremental Backup을 자주 수행함으로써 데이터 손실을 최소화할 수 있습니다. 그러나 이 방법은 전체 데이터베이스 복구와 마찬가지로 복잡한 프로세스를 포함하고 있으므로, 이를 수행하기 전에 충분한 이해와 경험이 필요합니다.

 

Oracle 데이터베이스 복구를 위한 다른 방법으로는 Flashback 기술이 있습니다. Flashback은 데이터베이스의 특정 시점으로 데이터베이스를 되돌리는 기술로, 데이터베이스 복구 시간을 단축시킬 수 있습니다.

Flashback을 사용하려면, 데이터베이스를 이전 시점으로 되돌리기 위한 충분한 시간 범위 내에 Flashback 데이터 보존 옵션을 설정해야 합니다. 이를 위해 다음과 같은 명령을 사용합니다.

ALTER DATABASE FLASHBACK ON;

Flashback을 사용하여 데이터베이스를 복구하는 방법은 다음과 같습니다.

1. RMAN 실행
RMAN을 실행합니다. 예를 들어, 다음과 같은 명령을 사용하여 RMAN을 실행할 수 있습니다.

rman target /

 

2. Flashback Database 확인
Flashback을 사용하여 데이터베이스를 복구할 수 있는지 확인합니다. 이를 위해 다음과 같은 명령을 사용할 수 있습니다.

FLASHBACK DATABASE TO TIME 'SYSDATE-1';

이 명령은 1일 전 시점으로 데이터베이스를 복구할 수 있는지를 확인합니다.

3. 데이터베이스 복구

Flashback을 사용하여 데이터베이스를 복구합니다. 이를 위해 다음과 같은 명령을 사용합니다.

FLASHBACK DATABASE TO TIME 'SYSDATE-1';

이 명령은 1일 전 시점으로 데이터베이스를 복구합니다.

 

Flashback은 데이터베이스 복구 시간을 단축시키는 데 도움이 되는 기술입니다. 그러나 Flashback 데이터 보존 옵션을 미리 설정하지 않았거나 데이터베이스가 큰 경우 Flashback으로 복구하는 것이 불가능할 수 있습니다. 따라서 이 방법을 사용하기 전에 충분한 이해와 경험이 필요합니다.


Point-in-Time 복구

Oracle 데이터베이스에서 Point-in-Time 복구를 수행하는 방법은 다음과 같습니다.

 

1. 시간 설정

Point-in-Time 복구를 수행할 시간을 설정합니다. 이를 위해 TO_DATE 함수를 사용합니다. 예를 들어, 다음과 같은 명령을 사용하여 복구 시간을 설정할 수 있습니다.

SET UNTIL TIME "TO_DATE('2022-01-01 09:00:00', 'YYYY-MM-DD HH24:MI:SS')";

이 명령은 2022년 1월 1일 오전 9시까지의 데이터를 복구할 수 있도록 시간을 설정합니다.

 

2. 데이터 파일 복원
Point-in-Time 복구를 수행하기 위해 복구할 데이터 파일을 복원합니다. 이를 위해 RESTORE DATABASE 명령을 사용합니다. 예를 들어, 다음과 같은 명령을 사용하여 데이터 파일을 복원할 수 있습니다.

RESTORE DATABASE;

 

3. 아카이브 로그 적용
데이터 파일 복원이 완료되면, Point-in-Time 복구 시간 이후의 변경 내용을 포함하는 아카이브 로그를 적용합니다. 이를 위해 RECOVER DATABASE 명령을 사용합니다. 예를 들어, 다음과 같은 명령을 사용하여 아카이브 로그를 적용할 수 있습니다.

RECOVER DATABASE;

 

4. 데이터베이스 열기
데이터 파일의 복원과 아카이브 로그 파일의 적용이 완료되면, 데이터베이스를 열어서 사용할 수 있도록 합니다. 이를 위해 OPEN DATABASE 명령을 사용합니다. 예를 들어, 다음과 같은 명령을 사용하여 데이터베이스를 열 수 있습니다.

ALTER DATABASE OPEN;

 

Point-in-Time 복구는 데이터베이스를 이전 시점으로 복구할 수 있는 강력한 방법입니다. 그러나 Point-in-Time 복구를 수행하기 전에 복구 시간을 정확히 파악하고 데이터 파일과 아카이브 로그 파일을 충분히 확인해야 합니다. 또한, 이 방법은 복잡한 프로세스를 포함하고 있으므로 충분한 이해와 경험이 필요합니다.ㅍ

 

Oracle 데이터베이스의 다른 복구 방법으로는 Data Pump Export 및 Import를 사용하는 방법이 있습니다. 이 방법은 데이터베이스를 이전 상태로 되돌리는 것이 아니라, 이전 상태의 데이터를 새로운 데이터베이스로 가져오는 방법입니다.

Data Pump Export 및 Import를 사용하여 데이터베이스를 복구하는 방법은 다음과 같습니다.

1. Data Pump Export
이전 상태의 데이터베이스를 Export하여 Dump 파일을 생성합니다. 이를 위해 다음과 같은 명령을 사용할 수 있습니다.

expdp system/password@database_name directory=DUMP_DIR dumpfile=db_backup.dmp logfile=db_backup.log full=y

이 명령은 "DUMP_DIR" 디렉토리에 "db_backup.dmp" 파일을 생성하고, 데이터베이스의 전체 내용을 Dump 파일에 Export합니다.

 

2. 새로운 데이터베이스 생성
이전 상태의 데이터베이스를 복원하기 위해 새로운 데이터베이스를 생성합니다. 이를 위해 다음과 같은 명령을 사용할 수 있습니다.

create database new_database_name;

이 명령은 "new_database_name"이라는 새로운 데이터베이스를 생성합니다.

 

3. Data Pump Import
Export한 Dump 파일을 사용하여 새로운 데이터베이스에 데이터를 Import합니다. 이를 위해 다음과 같은 명령을 사용할 수 있습니다.

impdp system/password@new_database_name directory=DUMP_DIR dumpfile=db_backup.dmp logfile=db_restore.log full=y

이 명령은 "DUMP_DIR" 디렉토리에서 "db_backup.dmp" 파일을 가져와서 "new_database_name" 데이터베이스에 Import합니다.

 

Data Pump Export 및 Import를 사용하여 데이터베이스를 복구하는 방법은 이전 상태의 데이터를 가져와서 복구하는 것이므로, Point-in-Time 복구나 미디어 복구보다는 덜 복잡한 방법입니다. 그러나 이 방법은 이전 상태의 데이터를 전부 복원해야 하므로, 복원 시간이 길어질 수 있습니다.

728x90
Comments