rman 복구 방안 과 Oacle 이상 기 복구

주:① 복구 의 전 제 는 백업 이 완료 되 었 음 ② 데이터 베 이 스 를 완전히 복구 하 는 것 은 데이터 베이스 가 고장 난 것 입 니 다.복구 할 때 이미 제출 한 사물 데 이 터 를 잃 어 버 리 지 않 은 회복 불완전 복구 데이터 베 이 스 는 데이터 베이스 가 고장 난 것 입 니 다.복구 할 때 일부 데 이 터 를 잃 어 버 린 회복 ③ Liux 에서 환경 변 수 를 설정 해 야 합 니 다.복구 가 필요 한 Oacle 데이터베이스 의 인 스 턴 스 이름:export ORACLESID=orcl ④ resetlogs 로 데이터 베 이 스 를 시작 할 때 데이터 베 이 스 를 모두 백업 해 야 합 니 다.
1.복구 방안 1.데이터 파일 을 잃 어 버 리 고 완전히 복구 합 니 다

RMAN>startup mount;
RMAN>restore database;
RMAN>recover database;
RMAn>sql 'alter database open';
2.로그 파일 을 잃 어 버 리 고 불완전 회복 합 니 다

SQL>startup mount;
SQL>recover database until cancel;
SQL>alter database open resetlogs;
3.데이터 파일 을 잃 어 버 리 고 제어 파일 과 로그 파일 을 다시 만 듭 니 다.불완전 회복 합 니 다

RMAN>startup nomount;
RMAN>restore controfile from autobackup;
RMAN>alter database mount;
RMAN>restore database;
SQL>recover database using backup controlfile until cancel;
SQL>alter database open resetlogs;
4.초기 화 파일 을 잃 어 버 리 고 제어 파일 데이터 파일 과 로그 파일 을 다시 만 듭 니 다.불완전 회복 합 니 다

SQL>startup nomount pfile='D:\oracle\product\10.2.0\db_1\admin\orcl\pfile\init.ora.27201414210'; #pfile
RMAN>restore spfile from autobackup;
SQL>shutdown immediate;
SQL>startup nomount;
RMAN>restore controlfile from autobackup;
RMAN>alter database mount;
RMAN>restore database;
SQL>recover database using backup controlfile until cancel;
SQL>alter database open resetlogs;
5.시간 에 따 른 회복(상용)

RMAN>startup mount;
RMAN>restore database;
RMAN>sql 'alter session set nls_date_format="yyyymmdd hh24:mi:ss"'; #
RMAN>recover database until time '20140312 17:07:00'; # 2014-03-12 17:07:00
RMAN>sql 'alter database open resetlogs';
6.SCN 기반 회복

RMAN>startup mount;
RMAN>restore database;
RMAN>recover database until scn  963915;
RMAN>sql 'alter database open resetlogs';
① 현재 SCN 번 호 를 조회:

SQL>select dbms_flashback.get_system_change_number from dual;
② SCN 번 호 를 조회 하 는 시간:

SQL>select to_char(scn_to_timestamp(963959),'yyyymmdd hh24:mi:si') from dual;
③ 시간 에 따라 SCN 번 호 를 조회 합 니 다

SQL>select timestamp_to_scn(to_date('20140309 17:55:10','yyyymmdd hh24:mi:ss')) from dual;
④ 한 동안 의 SCN 번 호 를 조회 합 니 다

SQL>select * from (select time_dp,scn from smon_scn_time order by time_dp desc) where  rownum<20;
7.incarnation 깊이 이해:resetlogs 를 넘 어 데이터 회복 ① 매번 resetlogs 는 incarnation+1 을 할 수 있 습 니 다.이전 incarnation 의 scn 으로 회복 하려 면 이전 incarnation 으로 먼저 회복 해 야 합 니 다.
② Incarnation 11 and 12 는 scn 900000 의 spot 을 포함 하기 때문에 incarnation 12 가 until scn 을 할 때 현재 incarcation 으로 회복 되 는 scn 입 니 다.그러나 우리 의 수요 에 따라 우리 에 게 필요 한 것 은 incarnation 11 의 scn 900000 이다.그래서 incarnation 을 incarnation 11 로 전환 해 야 우리 가 필요 로 하 는 데 이 터 를 찾 을 수 있 습 니 다.RMAN>reset database to incarnation 11;
8.recover database 의 네 가지 문 구 는 ① SQL>recover database using backup controlfile 이 현재 제어 파일 을 잃 어 버 리 면 냉 백업 제어 파일 로 복구 할 때 Oacle 에 게 controlfile 의 scn 을 회복 의 종점 으로 하지 말 라 고 알려 줍 니 다.② SQL>recover database until cancel 이 current/active redo 를 잃 어 버 렸 을 때 수 동 으로 종점 을 지정 합 니 다.③SQL>recover database using backup controlfile until cancel;현재 controlfile 을 잃 어 버 리 고 current/active redo 를 잃 어 버 리 면 압축 파일 로 그 를 자동 으로 적용 하여 최대 복구 가 가능 합 니 다.④SQL>recover database until cancel using backup controlfile;현재 controlfile 을 잃 어 버 리 고 current/active redo 를 잃 어 버 리 면 오래된 redo 의 scn 을 복구 종점 으로 합 니 다.압축 파일 로그 가 적용 되 지 않 아 모든 데 이 터 를 잃 어 버 립 니 다.
recover database using backup controlfile 을 이해 하려 면 먼저 recover database 를 이해 하 십시오.일반적인 recover database 또는 recover tablespace,recover datafile 시 Oracle 은 현재 controlfile 에 기 록 된 SCN 을 기준 으로 archive log 와 redo log 의 redo entry 를 이용 하여 관련 datafile 의 block 을'현재 controlfile 에 기 록 된 SCN'으로 복원 합 니 다.어떤 경우 오 라 클 은 현재 controlfile 에 기 록 된 SCN 보다 더 뒤쪽 위치 로 데 이 터 를 복원 해 야 합 니 다(예 를 들 어 control file 은 backup controlfile 이거 나 controlfile 은 trace create 에 따 른 것 입 니 다).이 럴 때 는 backup controlfile 을 사용 해 야 합 니 다.   복 구 는'현재 controlfile 에 기 록 된 SCN'의 제한 을 받 지 않 습 니 다.이 때의 제한 은 구문(until time,until scn)이나 사용 가능 한 archive log(until cancel)에서 비롯 됩 니 다.파일 을 잃 어 버 리 면 restore 백업 제어 파일 을 사용 한 후 using backup controlfile 옵션 을 사용 해 야 합 니 다.until cancel 은 current/active redo 를 잃 어 버 리 거나 restore 데이터베이스 에서 압축 파일 이 부족 하면 종 료 됩 니 다.결론:오래된 데이터베이스 백업 이 있 으 면 압축 파일 로그 와 온라인 로그 가 모두 저 장 된 상태 에서 recover database 또는 recover database using backup controlfile 을 사용 하면 데 이 터 를 잃 어 버 리 지 않 습 니 다.백업 데이터 파일 restore 가 존재 하면 압축 파일 로그 나 온라인 로그(active,current)를 잃 어 버 린 경우recover database using backup controlfile until cancel 을 사용 하면 최대 복구 가 가능 합 니 다.
2.RMAN 이상 기기 복구(원본 데이터베이스 와 대상 데이터베이스 의 인 스 턴 스 이름 이 일치 해 야 합 니 다)
1.원본 데이터 베 이 스 를 백업 합 니 다

RMAN>backup database plus archivelog;
RMAN>backup current controlfile;
2.원본 데이터 베 이 스 를 생 성 하 는 매개 변수 파일 입 니 다.수정 후 대상 데이터 베이스 3 에 전송 하고 windows 플랫폼 에서 복원 합 니 다

C:\>oradim -new -sid orcl  # orcl
C:\>set ORACLE_SID=orcl
C:\>sqlplus "/as sysdba";
SQL>startup nomount pfile='C:\INITorcl.ORA';
SQL> create spfile from pfile='C:\INITorcl.ORA';
SQL> shutdown immediate;
SQL>exit;
C:\>set ORACLE_SID=orcl
C:\>rman target/
RMAN>startup nomount;
RMAN>restore controlfile to ' ' from ' ';
RMAN>alter database mount;
RMAN>catalog start with ' '; #
RMAN>crosscheck backup;
RMAN>report schema;
아래 스 크 립 트 를 작성 하고 실행 합 니 다

run
{
set newname for datafile 1
  to 'C:\oracle\product\10.2.0\oradata\orcl\SYSTEM.DBF';  # SYSTEM.DBF
   set newname for datafile 2
   to 'C:\oracle\product\10.2.0\oradata\orcl\UNDOTBS1.DBF';
   set newname for datafile 3
   to 'C:\oracle\product\10.2.0\oradata\orcl\SYSAUX.DBF';
   set newname for datafile 4
   to 'C:\oracle\product\10.2.0\oradata\orcl\USERS.DBF';
   set newname for datafile 5
   to 'C:\oracle\product\10.2.0\oradata\orcl\BANK_DATA02.DBF';
restore database;
switch datafile all;
}
RMAN>recover database;
RMAN>sql 'alter database open resetlogs';
복구 성공

좋은 웹페이지 즐겨찾기