Site icon DBA의 정석

ASM 환경에서 Hot Backup 사용 하여 Single DB로 복구

ASM 환경에서 Hot Backup & Single DB 구축


흔히 ASM 환경에서 RMAN 을 이용하여 백업을 하고 있습니다.


RMAN 을 이용한 Backup이 아닌 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”
SQL) 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 구축할 VM에 Backup 받은 Datafile과 Controlfile Trace File, Pfile,Archive Log 를 FTP 복사 후 진행


– Pfile 수정
% audit_file_dest 폴더를 생성해주어야 한다. controlfile 이 이중화 할 경우 이중화 된 경로 까지 폴더를 생성 해주어야 합니다.


– Control File 생성
% Pfile을 불러오지 못하는 경우 SQL) startup nomount pfile='<LOCATION>’; 수행을 먼저 합니다.
% ControlFile Trace File을 확인 해보면 CREATE CONTROLFILE REUSE DATABASE “TEST” 로 되어 있습니다.
기존에 있던 걸 다시 사용하는 것이 아닌 신규 DB로 구축하는 것 이기 때문에  REUSE -> SET으로 변경해주시면 됩니다.


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 시 따로 경로를 지정 안해줘도 됩니다.


SQL) alter system set log_archive_dest_1=’LOCATION=/u01/app/oracle/arch’ scope=both;
SQL) 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

Exit mobile version