|
▶ 복구할 파일 결정 V$RECOVER_FILE 테이블을 사용하여 복구할 파일을 결정(복구해야 하는 파일을 모두 나열하며 파일을 복구해야 하는 이유 설명) 주: 현재 사용중인 제어파일이 매체 장애 발생 이후에 복원된 백업이거나 새로 생성된 파일인 경우 이 테이블은 유용하지 않다. 복원되거나 재생성된 제어 파일은 오라클이 V$RECOVER_FILE을 정확하게 채우는데 필요한 정보를 가지고 있지 않음 SELECT file#, online, error FROM v$recover_file;
FILE# ONLINE ERROR
--------------------------------------------------------------
0014 ONLINE
0018 ONLINE FILE NOT FOUND
0032 OFFLINE OFFLINE NORMAL
...
파일 번호로 파일 이름을 찾으려면 파일의 NAME과 FILE#을 포함하는 데이터 딕셔너리 뷰 V$DATEFILE을 사용한다.
▶ 손상된 데이터 파일복원 -손상된 파일 위치 재지정-데이터 파일 이름 변경 및 위치 재지정 -백업 없는 데이터 파일 복구 ※데이터 파일이 손상되어 파일의 백업을 사용할 수 없는 경우에 복구가능한 경우 ① 원래 데이터 파일이 생성된 후에 쓰여진 모든 로그 파일이 사용 가능한 경우 ② 제어 파일이 손상된 파일 이름을 가지고 있는 경우(즉 제어 파일이 현재 제어파일이거나 손상된 데이터파일이 데이터베이스에 추가된 후에 만들어진 백업이 있을 경우) 예)데이터 파일 "disk1:users1"이 손상되었고 사용 가능한 백업이 없을 경우 동일한 크기의 원본 데이터 파일을 disk2에 재생하는 방법 ALTER DATABASE CREATE DATEFIEL 'disk1:users1' AS 'disk2:users1'
▶ 필요한 아카이브된 리두로그 파일 복원 아래의 두 테이블을 사용하여 필요한 아카이브된 리두로그 파일을 결정 할 수 있다. V$LOG_HISTORY - 가능한 이름을 포함한 모든 아카이브된 로그를 나열한다. V$RECOVERY_LOG -복구해야할 아카이브된 리두 로그만을 나열한다. *가능한 이름은 LOG_ARCHIVE_FORMAT 매개변수에 의해 설정된 현재 아카이브된 로그 파일 명명법을 제공한다.
▶ 매체 복구 시작 ARCHIVELOG mode-불완전 매체 복구, 완전 매체 복구 Server Manager의 세가지 옵션중에 하나로 -[Apply Recovery Archives]대화상자 -Server Manager RECOVER 명령어 -SQL 명령어 ALTER DATABASE ※관리자 권한, 모든 복구 세션은 호환되어야 한다.사용자가 다중 스레드 서버 프로세스를 통해 데이터베이스를 접속한 경우 사용자는 매체 복구 시작할 수 없음
▶ 복구 (1) 닫힌 데이터베이스 복구 마운트상태일 때 Server Manger의 [Apply Recovery Archives] 대화상자 사용 RECOVER명령어 - 완전복구,불완전복구 예)제어파일 백업을 사용하여 데이터베이스를 지정된 시간께지 복구
RECOVER DATABASE UNTIL TIME '1992-12-31:12:47:30' USING BACKUP CONTROLFILE;
(2) 열린 데이터베이스에서 오프라인 테이블스페이스 복구 -중요한 테이블 스페이스를 오프라인 설정 -> RECOVER 명령어 TABLESPACE 매개변수를 사용하여 열린 데이터베이스의 오프라인 테이블스페이스 복구 시작할 수 있음 - 하나이상의 오프라인 테이블스페이스를 복구할 수 있음 예) 두 개의 오프라인 테이블스페이스 복구
RECOVER TABLESPACE ts1,ts2;
-손상된 파일을 포함하는 테이블스페이스를 오프라인으로 설정한 후 V$DATAFILE의 파일 상태를 검사하여 연관된 데이터 파일 역시 오프라인 상태라면 RECOVER 명령어 DATAFILE 매개변수를 사용하여 선택된 데이터파일을 복구 할 수 있다.
RECOVER DATAFILE 'filename1','filename2';
Server Manager 매체 복구 옵션과 동일한 SQL명령어는 RECOVER절을 사용한 SQL 명령어 ALTER DATABASE이다. 일반적으로 데이터베이스 복구는 사용자 입력을 받아 시스템 메시지를 돌려주는 Sever Manager를 사용하여 수행되어야 한다. 그러나 SQL 명령어를 사용하여 사용자 고유의 복구 응용 프로그램을 설계하려면 ALTER DATABASE 명령어를 사용한다.
(3)인스턴스 시작 중 복구 시작 Server Manger에서 STARTUP 명령어에 RECOVER 옵션을 사용하여 완전 매체 복구를 시작 할 수 있다. 인스턴스가 시작되고 데이터베이스가 마운트된 후 완전 매체 복구는 "완전 매체 복구 수행"에 설명된 대로 진행
▶ 리두로그 피일 적용 완전 매체 복구 또는 불완전 매체 복구 시 온라인 리두 로그나 아카이브된 리두로그는 매체 복구 롤 포워드 단계 중에 데이터 파일에 적용된다. 롤백 데이터가 리두 로그에 기록되므로 롤 포워드는 해당 롤백 세그먼트를 재생성 한다. 롤포워드는 데이터베이스를 정해진 시점으로 앞당기기 위해 필요한 만큼의 리두 로그 파일을 사용한다. 로그 파일이 필요해지면 Oracle은 해당 파일 이름을 제안한다. 예) Server Manager를 사용하는 경우 ora-00279 : change #### generated at DD/MM/YY HH:MM:SS needed for thtead # ora-00289 : Suggestion : logfile ora-00280 : Change #### for thread # is in sequence # Specify log: [<RET> for suggested | AUTO | FROM logsource | CANCEL ]
▶ 로그 파일 적용 (1) 제안된 로그 파일명 요청된 아카이브된 로그파일이 LOG_ARCHIVE_DEST에 모두 마운트되어 있고 LOG_ARCHIVE_FORMAT 의 값이 변경되지 않았을 경우 Oracle은 자동으로 로그 파일을 제안하고 적용하여 매체복구를 수행. LOG_ARCHIVE_DEST 에 의해 지정된 위치가 매체 장애 등의 이유로 사용할 수 없는 경우 매체 복구를 시작하기 전에 이 매개변수의 값을 변경하고 로그파일을 새 위치로 이동시킨 후 새 인스턴스를 시작할 수 있다. 어떤 경우에는 LOG_ARCHIVE_DEST의 현재 설정값을 로그 파일의 원본으로 무효화해야 할 경우가 있다. 예) 데이터베이스가 열린 상태이고 오프라인 테이블스페이스를 복구해야 하지만 LOG_ARCHIVE_DEST에 의해 지정된 위치에 필요한 로그파일을 마운트할 영역이 충분하지 않을 경우 로그 파일을 대체될 위치에 마운트시킨 후 Oracle에 복구 작업을 위한 대체 위치를 지정한다. 필요한 로그파일이 있는 위치를 지정하려면 Server Manager에서 SET 명령어에 LOGSOURCE 매개변수를 사용합니다. SQL을 사용할 때는 ALTER DATABASE 명령어에 RECOVER...FROM 매개변수를 사용한다. 한위치에 필요한 로그 파일을 모두 마운트시킬 충분한 영역이 없을 경우 LOG_ARCHIVE_DEST의 현재 설정값 무효화를 고려할 수 있다.
(2) Server Manager를 사용하는 경우 로그 파일 적용 제안된 아카이브된 리두로그가 정확한 경우 제안된 아카이브된 리두로그를 적용한다. 제안된 파일이 정확하지 않은 경우를 제외하고는 파일명을 지정할 필요가 없다. 파일명이 제공된 후 Oracle은 복원된 데이터베이스를 롤 포워드 하기 위해 로그 파일을 적용한다. -매체복구를 시작하기 전에 다음 Server Manager 명령문을 사용하여 자동복구를 시작한다. SET AUTORECOVERY ON; 복구되기 시작하면 제안된 리두로그의 자동 적용이 시작된다. -매체복구가 시작되면 리두로그 파일 입력 프롬프트에 "auto"를 입력한다. 제안된 리두로그의 자동 적용이 시 시점 부터 시작된다. 제안된 리두로그 파일은 제안된 리두 로그가 정확하지 않거나 복구가 완료될 때까지 자동으로 적용된다. 취소에 준한 복구 또는 제어 파일 백업을 사용할 경우에는 온라인 리두로그 파일을 수동으로 지정해야 한다.
(3) SQL명령어를 사용하는 경우 로그 파일 적용 리두로그 파일 적용은 리두로그 파일 적용고 유사하다. 그러나 매체 복구가 시작된 후에는 로그파일의 입력 프롬프트가 표시되지 않는 대신 ALTER DATABASE RECOVER LOGFILE 명령문을 사용하여 정확한 로그파일을 제공해야 한다. 예) 메시지에 LOG1.ARC를 제안한 경우 다음 명령문을 사용하여 해당제안을 적용할 수 있다.
ALTER DATABASE RECOVER LOGFILE 'log1.arc';
결과적으로 다음 예에 나타나는 것처럼 테이블스페이스를 복구하려면 여러 명령문을 사용해야 한다. >ALTER DATABASE RECOVER TABLESPACE user1; >ALTER DATABASE RECOVER LOGFILE 'logfile1'; >ALTER DATABASE RECOVER LOGFILE 'logfile2'; >ALTER TABLESPACE user ONLINE;
이 예에는 백업 파일이 이미 복원되었고 사용자에게 관리자는 권한이 있는 것으로 가정한다.
Server Manager에서 사용한 방법처럼 복구 시작 전이나 복구 중에 각각 다음 명령문을 사용하여 리두로그의 자동 적용을 시작할 수 있다. ① ALTER DATABASE RECOVER AUTOMATIC TABLESPACE users; ALTER TABLESPACE user ONLINE; ② ALTER DATABASE RECOVER TABLESPACE users; ALTER DATABASE REVOVER AUTOMATIC LOGFILE 'logfile1'; ALTER TABLESPACE user ONLINE;
(4) 리두 로그의 성공적인 적용 SQL 명령문이 아닌 Server Manager의 복구 옵션을 사용하는 경우 Oracle이 리두로그 파일을 적용할 때마다 Log applied 메시지를 돌려주는 지 확인해야 한다. 제안된 파일이 잘못되었거나 잘못된 파일명을 제공했을 경우 오류메시지를 돌려줌, 오류메시지를 돌려주었다면 복구에 필요한 리두 로그 파일은 작용되지 않았다. 리두로그 파일명을 입력한후 오류메시지를 돌려주었다면 발생할 수 있는 오류 ① 파일을 찾을 수 없다 - 잘못된 파일명을 입력했을 때 정확한 파일명을 재입력. ② 리두로그 파일을 찾았어나 열 수 없는 경우 - 리두로그 파일의 잠금을 해제한 후 파일명 재입력 한다. ③ 리두로그 피일을 찾았어나 읽을 수 없는 경우 - 리두 로그 파일이 부분적으로만 쓰여졌거나 훼손되었을 때 일어난다. 훼손되지 않은 완전한 로그의 복사본을 찾을 수 있다면 다시 복구할 필요없이 단순히 해당 복사본을 적용한다. 로그의 다른 복사본이 없고 최근의 유효한 리두 입력 항목을 알고 있을 경우 시간에 준한 복구 또는 변경 사항에 준한 복구 수행할 수 있다.
▶ 매체 복구 중단 매체 복구 작업을 시작한 후 중단시켜야 할 경우 다음 작업중 하나를 실행하여 언제든 복구 중단 가능 - 리두 로그 파일 프롬프트에 "calcel"을 입력 - 개별 데이터 파일을 복구할 때 또는 자동 복구가 진행될 때 중단시키려면 운영 체제의 인터럽트 신호를 사용한다. 복구가 취소된 후에는 정상 작업을 수행할 수 있도록 데이터베이스를 열기 전에 복구를 완료해야 한다. 복구를 재개하려면 재시작한다. 복구는 취소될 때 중단된 지점부터 재개
|