다른 명령
ASM 환경에서 Hot Backup 후 Single DB 복구/구축
개요
- 12c이후 ASM 환경에서 RMAN으로만 백업 가능함
- RMAN + Hot Backup을 이용하여 백업 후 Single DB로 복구
- 환경구성
- * 필요한 VM
- - ASM 사용 환경 (Single ASM, RAC(ASM))
- - Single DB 구축할 VM (softonly로 설치)
- - RAC 환경인 경우 양쪽 Node 의 Archive Log 를 가져와야 함
백업 받을 File 확인
SQL) select file_name from dba_data_files; FILE_NAME ------------------------------------------------- +DATA/orcl/datafile/users.259.824961691 +DATA/orcl/datafile/undotbs1.258.824961691 +DATA/orcl/datafile/sysaux.257.824961689 +DATA/orcl/datafile/system.256.824961687 +DATA/orcl/datafile/sysaux.278.894653489 +DATA2/orcl/datafile/sysaux02.dbf +DATA/orcl/datafile/sysaux.272.894653613 +DATA/orcl/datafile/sysaux +DATA/orcl/datafile/mvtest0101.dbf +DATA/orcl/datafile/mvtest0202.dbf +DATA2/orcl/datafile/system.268.875036169
Begin Backup 수행
sqlplus "/as sysdba"
alter database begin backup;
SID 변경
$> . oraenv
ORACLE_SID = [ORCL1] ? +ASM1 The Oracle base remains unchanged with value /u01/app/oracle
File Copy 수행
$> asmcmd
ASMCMD> cp +DATA/orcl/datafile/users.259.824961691 /home/oracle/npa/users01.dbf ASMCMD> cp +DATA/orcl/datafile/undotbs1.258.824961691 /home/oracle/npa/undotbs01.dbf ASMCMD> cp +DATA/orcl/datafile/sysaux.257.824961689 /home/oracle/npa/sysaux01.dbf ASMCMD> cp +DATA/orcl/datafile/system.256.824961687 /home/oracle/npa/system01.dbf ASMCMD> cp +DATA/orcl/datafile/sysaux.278.894653489 /home/oracle/npa/sysaux02.dbf ASMCMD> cp +DATA2/orcl/datafile/sysaux02.dbf /home/oracle/npa/sysaux05.dbf ASMCMD> cp +DATA/orcl/datafile/sysaux.272.894653613 /home/oracle/npa/sysaux03.dbf ASMCMD> cp +DATA/orcl/datafile/sysaux /home/oracle/npa/sysaux04.dbf ASMCMD> cp +DATA/orcl/datafile/mvtest0101.dbf /home/oracle/npa/mvtest01.dbf ASMCMD> cp +DATA/orcl/datafile/mvtest0202.dbf /home/oracle/npa/mvtest02.dbf ASMCMD> cp +DATA2/orcl/datafile/system.268.875036169 /home/oracle/npa/system02.dbf - End Backup 수행
$> . oraenv
ORACLE_SID = [+ASM1] ? ORCL1 The Oracle base remains unchanged with value /u01/app/oracle
sqlplus "/as sysdba"
SQL) alter database end backup;
Control file Trace 로 내려 받기
SQL) alter backup controlfile to trace '/home/oracle/control.trc';
Pfile 받기
SQL) create pfile='/home/oracle/pfile.txt' from spfile;
Single DB에 백업한 설정 파일 복사
- FTP 나 SSH로 파일 복사
- 복사할 백업파일
- Single DB 구축할 VM에 Backup 받은 Datafile
- Controlfile Trace File
- Pfile
- Archive Log
Pfile 수정
- audit_file_dest 폴더를 생성해주어야 함.
- controlfile 이 이중화 할 경우 이중화 된 경로 까지 폴더를 생성 해주어야 함.
Control File 생성
- Pfile을 불러오지 못하는 경우
SQL) startup nomount pfile='<pfile 경로>';
- ControlFile Trace File을 확인 해보면
CREATE CONTROLFILE REUSE DATABASE "TEST"
로 되어 있습니다.
- 기존에 있던 걸 다시 사용하는 것이 아닌 신규 DB로 구축하는 것 이기 때문에 REUSE -> SET으로 변경
-- nomount로 기동 STARTUP NOMOUNT; -- 컨트롤 파일 생성 CREATE CONTROLFILE SET DATABASE "TEST" RESETLOGS ARCHIVELOG MAXLOGFILES 192 MAXLOGMEMBERS 3 MAXDATAFILES 1024 MAXINSTANCES 32 MAXLOGHISTORY 292 LOGFILE GROUP 1 '/u01/app/oracle/oradata/test/redo01.log' SIZE 50M BLOCKSIZE 512, GROUP 2 '/u01/app/oracle/oradata/test/redo02.log' SIZE 50M BLOCKSIZE 512, GROUP 3 '/u01/app/oracle/oradata/test/redo03.log' SIZE 100M BLOCKSIZE 512, GROUP 4 '/u01/app/oracle/oradata/test/redo04.log' SIZE 10M BLOCKSIZE 512, GROUP 5 '/u01/app/oracle/oradata/test/redo05.log' SIZE 10M BLOCKSIZE 512 -- STANDBY LOGFILE DATAFILE '/u01/app/oracle/oradata/test/system01.dbf', '/u01/app/oracle/oradata/test/sysaux05.dbf', '/u01/app/oracle/oradata/test/users01.dbf', '/u01/app/oracle/oradata/test/undotbs01.dbf', '/u01/app/oracle/oradata/test/system02.dbf', '/u01/app/oracle/oradata/test/sysaux01.dbf', '/u01/app/oracle/oradata/test/sysaux02.dbf', '/u01/app/oracle/oradata/test/sysaux03.dbf', '/u01/app/oracle/oradata/test/sysaux04.dbf', '/u01/app/oracle/oradata/test/mvtest01.dbf', '/u01/app/oracle/oradata/test/mvtest02.dbf' CHARACTER SET AL32UTF8 ;
복구
- Recover(Archive Log 적용)
- Archive Log Dest 를 적용 시킨 후 해당 위치에 Archive Log 를 Move 해놓으면 Recover 시 따로 경로를 지정 안해도 됨
alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/arch' scope=both;
recover database using backup controlfile
ORA-00279: change 55307193 generated at 11/20/2015 00:52:18 needed for thread 1 ORA-00289: suggestion : /u01/app/oracle/oradata/orcl/1_3_896153147.dbf ORA-00280: change 55307193 for thread 1 is in sequence #3 Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
- AUTO (% 자동으로 Archive Log 적용)
- 중간에 Archive Log가 비어있으면 Error 발생함
- Archive Log를 다 적용 시켰는데도 Archive Log 를 찾는것은 기존 Redo 에 있는 내용을 찾는 것임.
- 기존 Redo 가 있으면 Redo Log를 적용시켜주면 되고, 없다면 아래의 명령어로 CANCEL 시켜줍니다.
SQL) recover database until cancel using backup controlfile
ORA-00279: change 55307193 generated at 11/20/2015 00:52:18 needed for thread 1 ORA-00289: suggestion : /u01/app/oracle/oradata/npa112db/1_3_896153147.dbf ORA-00280: change 55307193 for thread 1 is in sequence #3 Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
- CANCEL Media recovery cancelled.
- - 위와 같은 문구가 나왔다면 아래의 명령어로 DB를 OPEN 해줌
SQL> alter database open resetlogs; Database altered. -- 상태 확인. SQL> SELECT INSTANCE_NAME,VERSION,STATUS FROM V$INSTANCE; INSTANCE_NAME VERSION STATUS ----------------- ---------- ------------ orcl 11.2.0.2.0 OPEN