본문 바로가기

카테고리 없음

ORACLE 11g SWITCH v1.0

ORACLE 11g SWITCH v1.0

 

Date

Ver

Etc.

 

1.0

 

 

 

 

 

 

 

 

 

1.    SWITCH

l  Ref.A 에서 발췌했다.

 

Purpose

다음과 같은 목적으로 SWITCH 를 사용한다.

-      Database, tablespace, datafile filenames update 하기 위해  최신의 image copies 로 갱신한다.

-      SET NEWNAME 으로 수행 된 datafile tempfiles filenames 을 갱신한다.

 

Prerequisites

RMAN target 에 반드시 연결되어 있어야 한다. Tablespaces, datafiles 혹은 tempfiles 에 대해, 대상 파일은 반드시 offline 이어야 한다. Database 에 대해 switching 하는 경우에는 반드시 mount 상태여야 한다.

 

Usage Notes

SWITCH 명령은 recovery catalog 로부터 RMAN datafile copy 에 대한 repository record 를 삭제하고 control file records 상태를 deleted 로 갱신한다.

 

Semantics

switch

Database, tablespace, datafile 에 대해 마지막 image copies switch 한다. 이 명령어의 실행으로, backup 으로부터 restore 하는 과정을 생략할 수 있다. SWITCH … TO COPY 명령은 RMAN prompt 에서만 수행한다.

-      DATABASE : Image copies filenames 을 사용하기 위해 datafiles control files rename 한다. RMAN 은 각 database file 의 최신의 image copy 로 전환한다.

-      DATAFILE : 지정된 datafile 을 최신의 image copies 로 변경한다. switch , 지정 된 datafile 을 더 이상 current 상태로 고려하지 않는다.

-      TABLESPACE : 지정된 tablespace 안의 모든 datafile 을 변경한다.

-      TO COPY : 지정된 active database files image copies 로 변경한다.

 

switchfile

SET NEWNAME 명령으로 지정된 곳으로 datafile 그리고 tempfiles 의 이름을 갱신한다. 이는 RUN block 안에서만 사용 가능하다.

-      DATAFILE ALL : SET NEWNAME FOR DATAFILE 에 해당하는 모든 datafiles 에 대해 새로운 이름으로 스위치 한다.

-      DATAFILE detafileSpec : Renaming datafile 을 지정하며, controlfile 은 지정된 파일을 current 한 것으로 간주하지 않는다. 만약 TO 옵션을 생략하면, RMAN 은 앞서 셋팅 된 SET NEWNAME 에 설정된 이름을 사용한다. (run block 에서)

-      TO DATAFILECOPY {‘filename’|TAG tag_name} : Switch 를 위해 copy 입력을 지정하며, rename 하기 원하는 datafile copy 이다.

-      TEMPFILE ALL : SET NEWNAME FOR TEMPFILE 에 지정된 모든 tempfiles 이 새로운 이름으로 스위치 된다.

-      TEMPFILE tempfileSpec : Renaming 을 원하는 tempfile 을 지정한다. TO 옵션을 지정하지 않으면, RMAN RUN block 에 지정 된 SET NEWNAME 에 지정된 filename 을 사용한다. Target database open 상태가 아닌 mount 상태여야 한다.

-      TO ‘filename’ : 지정된 이름으로 tempfile rename 한다. 타겟 데이터베이스는 open 이 아닌 mount 상태여야 한다.

 

2.    Examples

Backup 으로부터 restoring 을 피하기 위한 스위치

 

RMAN> sql 'alter tablespace ogg offline';

RMAN> list copy of tablespace ogg;

RMAN> switch tablespace ogg to copy;

 

위 두번째 명령의 결과로 ogg image copy 의 경로가 다음과 같음을 확인했다.

Name: /backup1/ogg1/ogg1_data_D-OGG1_I-3966260165_TS-OGG_FNO-5_3hnq9gdc.bak

 

세번째 명령을 수행한 이후 list copy of tablespace ogg 의 결과는 다음과 같다.

Name: /u01/app/oracle/oradata/ogg1/ogg1.dbf

 

추가로 DB 에 접속해 ogg tablespace file_name 은 다음과 같다.

/backup1/ogg1/ogg1_data_D-OGG1_I-3966260165_TS-OGG_FNO-5_3hnq9gdc.bak

 

위 내용을 정리하면 switch … to copy 명령을 통해 image copy 본이 새로운 데이터 파일로 명명되고 원본은 image copy 로 간주되었다. 말그대로 데이터파일과 COPY 가 서로의 입장을 SWITCH 하였다.

 

이 과정에서 RESTORE 과정은 없었다.

 

원복은 다음과 같이 run block 을 이용했다.

( 실행전에 switch 된 새로운 datafile recover 하고 online 으로 변경하는 과정을 밟았다. )

 

RMAN> run {

2> sql 'alter tablespace ogg offline';

3> set newname for datafile '/backup1/ogg1/ogg1_data_D-OGG1_I-3966260165_TS-OGG_FNO-5_3hnq9gdc.bak'

4> to '/u01/app/oracle/oradata/ogg1/ogg1.dbf';

5> switch datafile all;

6> recover tablespace ogg;

7> sql 'alter tablespace ogg online';}

 

위 수행에 대한 결과로 종전과 동일한 상황이 만들어졌다.

 

새로운 위치에 Restore datafile filenames 을 스위치

 

RUN

{

  SQL "ALTER TABLESPACE ogg OFFLINE IMMEDIATE";

  SET NEWNAME FOR DATAFILE '/u01/app/oracle/oradata/ogg1/ogg1.dbf'

                        TO '/u01/app/oracle/oradata/ogg1/ogg2.dbf';

  RESTORE TABLESPACE users;

  SWITCH DATAFILE ALL;

  RECOVER TABLESPACE users;

  SQL "ALTER TABLESPACE users ONLINE";

}

 

run block 을 수행하면 tablespace ogg 에 대한 copy 가 하나 더 늘어난다.

list copy of tablespace ogg; 의 결과는 다음과 같다.

 

Name: /u01/app/oracle/oradata/ogg1/ogg1.dbf

Name: /backup1/ogg1/ogg1_data_D-OGG1_I-3966260165_TS-OGG_FNO-5_3hnq9gdc.bak

 

Key Ckp SCN 을 보았을 때 상단의 경로가 최근에 생겼음을 알 수 있었다. 그리고 이 경로는 NEWNAME A TO B A 에 해당하는 경로이다.

 

report schema; 의 경로를 보면 NEWNAME A TO B B 위치에 새로이 데이터 파일이 생겼음을 알 수 있다.

 

5    10       OGG                  NO      /u01/app/oracle/oradata/ogg1/ogg2.dbf

 

앞서 본 run block 에서 사용한 set newname A to B 를 보았을 때 A 는 실재하는 경로를 사용하며 B 에는 실재할수도 없을수도 있는 경로를 사용했다. 실재하는 파일을 지정한 경우 RESTORE 없이 바로 SWITCH 를 사용했지만 실재하지 않는 파일을 지정한 경우에는 RESTORE 과정을 밟았다.

 

3.    References

A.     SWITCH | http://docs.oracle.com/cd/B28359_01/backup.111/b28273/rcmsynta049.htm