Oracle Diskgroup Move 작업 관련

안녕하세요. 유니원아이앤씨 입니다.

 

Oracle ASM 사용시 Diskgroup에 Redundancy를 변경해야되는 경우

Diskgroup안에 데이터 자체를 이동 시켜야 할때 유용한 작업 방법 공유드립니다.

 

 

 

 

 

 OS : Redhat 7.4
 Oracle Version : 12.2.0.1 EE
 Config : ASM Single


 * 디스크그룹 이전
1. 작업대상: DATA -> N_DATA
2. 기존 디스크그룹의 데이터를 다른 디스크그룹으로 변경시에 유용한 테스트
3. 활용: 디스크 그룹에대한 Redundancy 변경이 필요한 경우
4. 백업복구의 개념이기 때문에 Database Incanation은 변경된다.







 * 작업 시작


1. New Diskgroup 생성
 1.1 Vloume 할당

 1.2 Ownership 설정

 1.3 ASM Diskgroup 생성 (Redundancy 조정)

 1.4 Disk group 조회
SQL> r
  1* select state,name,type from v$asm_diskgroup

STATE        NAME   TYPE
---------------------- ---------- ------------
CONNECTED        DATA   EXTERN
MOUNTED         OCR   EXTERN
MOUNTED         N_DATA   NORMAL




 



2. spfile, controlfile copy

 2.1 대상 DB확인
SQL> show parameter name

NAME      TYPE     VALUE
------------------------------------ ---------------------- ------------------------------
db_name       string     test1

 

 

 



 2.2 spfile 복제
SQL> show parameter spfile

NAME      TYPE     VALUE
------------------------------------ ---------------------- ------------------------------
spfile      string     +DATA/test1/PARAMETERFILE/spfi
    le.266.1002798057
 
 # grid계정에서 실행 (또는 oracle 그리드홈설정하여) 
asmcmd ls +DATA/test1
 ARCHIVELOG/
 CONTROLFILE/
 DATAFILE/
 ONLINELOG/
 PARAMETERFILE/
 TEMPFILE/

asmcmd mkdir +N_DATA/test1
asmcmd mkdir +N_DATA/test1/ARCHIVELOG/
asmcmd mkdir +N_DATA/test1/CONTROLFILE/
asmcmd mkdir +N_DATA/test1/DATAFILE/
asmcmd mkdir +N_DATA/test1/ONLINELOG/
asmcmd mkdir +N_DATA/test1/PARAMETERFILE/
asmcmd mkdir +N_DATA/test1/TEMPFILE/
asmcmd cp +DATA/test1/PARAMETERFILE/spfile.266.1002798057 +N_DATA/test1/PARAMETERFILE/spfiletest1.ora







 2.3 controlfile 복제
SQL> show parameter control_files

NAME      TYPE     VALUE
------------------------------------ ---------------------- ------------------------------
control_files      string     +DATA/TEST1/CONTROLFILE/curren
    t.257.1002796907


oracle> rman target /
RMAN> restore controlfile to '+N_DATA' from '+DATA/TEST1/CONTROLFILE/current.257.1002796907';
SQL> shutdown immediate







 2.4 New Diskgroup에서 Mount 진입

 # grid 또는 oracle 계정
srvctl modify database -d test1 -p +N_DATA/test1/PARAMETERFILE/spfiletest1.ora


SQL> startup nomount
SQL> show parameter spfile

NAME      TYPE     VALUE
------------------------------------ ---------------------- ------------------------------
spfile      string     +N_DATA/test1/PARAMETERFILE/sp
    filetest1.ora


 # grid계정에서 실행 (또는 oracle 그리드홈설정하여) 
grid> asmcmd ls +N_DATA/test1/CONTROLFILE
current.258.1032088189


SQL> alter system set control_files='+N_DATA/test1/CONTROLFILE/current.258.1032088189' scope=spfile sid='*';
SQL> shutdown immediate
SQL> startup mount

SQL> show parameter spfile

NAME      TYPE     VALUE
------------------------------------ ---------------------- ------------------------------
spfile      string     +N_DATA/test1/PARAMETERFILE/sp
    filetest1.ora

SQL> show parameter control_files

NAME      TYPE     VALUE
------------------------------------ ---------------------- ------------------------------
control_files      string     +N_DATA/test1/CONTROLFILE/curr
    ent.258.1032088189







 3. Datafile 이관

oracle> rman target /
RMAN> backup as copy database format '+N_DATA';
RMAN> switch database to copy;
RMAN> alter database open;

SQL> select instance_name, status, open_mode from v$instance,v$database;

INSTANCE_NAME  STATUS    OPEN_MODE
-------------------------------- ------------------------ ----------------------------------------
test1  OPEN   READ WRITE

 

 

참고문서: How To Move The Database To Different Diskgroup (Change Diskgroup Redundancy) (Doc ID
438580.1)

 

TAGS.

Comments