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

사업자 정보 표시
(주)블루원 | 김홍태 | 서울특별시 용산구 원효로 4가 135 금홍 2빌딩 | 사업자 등록번호 : 106-86-76684 | TEL : 02-3272-7200 | Mail : support_ora@blueone.co.kr | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기

+ Recent posts