01.오라클/003.DB 백업 및 복구

[오라클]RAC 10gR2 spfile / 아카이브 로그 모드 설정

redkite 2012. 12. 19. 16:44

RAC NoArchive log 모드를 Archive log모드로 변경

 

아카이브 로그의 모드를 변경할 때는 cluster_database를 False로 변경한 후

여러 RAC 노드 중 한 개의 노드에서만 아카이브 로그의 모드를 변경 작업하고,

cluster_database를 True로 변경한 후 startup하면 모든 RAC노드에 함께 적용된다.

 

-----------------------------------------------
[방법1] 여러 Parameter를 함께 변경할 경우
-----------------------------------------------

환경 : AIX5L Oracle10gR2 EE RAC 2-NODE, Raw Device
       (spfile도 Raw Device에 생성하여 양쪽노드가 공유)

 

0] 모든 노드 : DB SHUTDOWN
   srvctl stop instance -d RACDB -i RACDB1

   srvctl stop nodeapps -n dbhost1

   srvctl stop instance -d RACDB -i RACDB2

   srvctl stop nodeapps -n dbhost2

   (CRS stop하지 않음)

 

1] NODE 1 : DB STARTUP 상태에서 시작
   SQL> connect / as sysdba
   SQL> STARTUP NOMOUNT
   Archive log mode 확인
   SQL> archive log list
        Database log mode              No Archive Mode
        Automatic archival             Disabled
        Archive destination            /arch/RACDB1
           :

 

2] NODE 1 : spfile에서 pfile 생성 후 SHUTDOWN
   SQL> !cat initRACDB1.ora
        SPFILE='/dev/rspfileRACDB'
   SQL> !cp initRACDB1.ora initRACDB1.ora.20100316
   SQL> create pfile from spfile;
   SQL> shutdown immediate

 

3] NODE 1 : initRACDB1.ora의 cluster_database 주석처리 후 저장
   SQL> !vi initRACDB1.ora
         # cluster_database           = TRUE

         RACDB1.log_archive_dest_1  = "location=/arch/RACDB1 MANDATORY"
         RACDB2.log_archive_dest_1  = "location=/arch/RACDB2 MANDATORY"
         RACDB1.log_archive_format  = RACDB%t_%s_%r.arc
         RACDB2.log_archive_format  = RACDB%t_%s_%r.arc
         #LOG_ARCHIVE_START  = TRUE # 10g에서 없어짐
         
4] NODE 1 : Archivelog mode 적용하고 Open한 후 SHUTDOWN
   SQL> startup mount
   SQL> alter database archivelog;
   SQL> alter database open;
   SQL> shutdown immediate

 

5] NODE 1 : initRACDB1.ora의 주석 처리했던 cluster_database를 원상복구 후 저장
   SQL> !vi initRACDB1.ora
         cluster_database           = TRUE
         RACDB1.log_archive_dest_1  = "location=/arch/RACDB1 MANDATORY"
         RACDB2.log_archive_dest_1  = "location=/arch/RACDB2 MANDATORY"
         RACDB1.log_archive_format  = RACDB%t_%s_%r.arc
         RACDB2.log_archive_format  = RACDB%t_%s_%r.arc

 

6] NODE 1 : spfileRACDB를 다시 생성 후 initRACDB1.ora 원상복구
   SQL> create SPFILE='/dev/rspfileRACDB' from pfile;

   SQL> !mv initRACDB1.ora.20100316 initRACDB1.ora
   SQL> !cat initRACDB1.ora
        SPFILE='/dev/rspfileRACDB'

 

7] 모든 노드 : 데이터베이스 startup

   srvctl start nodeapps -n dbhost1

   srvctl start instance -d RACDB -i RACDB1

   srvctl start nodeapps -n dbhost2

   srvctl start instance -d RACDB -i RACDB2

   Archive log mode 확인

   SQL> connect / as sysdba

   SQL> archive log list
        Database log mode              Archive Mode
        Automatic archival             Enabled
        Archive destination            /arch/RACDB1
           :

----------------------------------------------------------------

[방법2] Parameter 중에 CLUSTER_DATABASE 만 변경할 경우

----------------------------------------------------------------

다른 init Parameter를 바꿀 필요없을 때는 다음과 같이 작업한다.

1] NODE 1 : DB STARTUP 상태에서 시작
   SQL> connect / as sysdba
   Archive log mode 확인
   SQL> archive log list
        Database log mode              No Archive Mode
        Automatic archival             Disabled
        Archive destination            /arch/RACDB1
                :

 

2] NODE 1 : spfile에 cluster_database=FALSE 설정
   SQL> ALTER SYSTEM SET CLUSTER_DATABASE=FALSE SCOPE=spfile;

 

3] 모든 노드 : RAC 노드 1, 2 모두 shutdown
   srvctl stop instance -d RACDB -i RACDB1

   srvctl stop nodeapps -n dbhost1

   srvctl stop instance -d RACDB -i RACDB2

   srvctl stop nodeapps -n dbhost2

   (CRS stop하지 않음)

 

4] NODE 1 : archivelog mode 적용하고 Open한 후 SHUTDOWN
   SQL> connect / as sysdba
   SQL> startup mount
   SQL> alter database archivelog;
   SQL> alter database open;
   SQL> shutdown immediate

 

5] NODE1 : spfile에 cluster_database=TRUE 설정
   SQL> connect / as sysdba
   SQL> startup mount
   SQL> ALTER SYSTEM SET CLUSTER_DATABASE=TRUE SCOPE=spfile; 
   SQL> shutdown immediate

 

6] 모든 노드 : 데이터베이스 startup 
   srvctl start nodeapps -n dbhost1

    srvctl start instance -d RACDB -i RACDB1

   srvctl start nodeapps -n dbhost2

   srvctl start instance -d RACDB -i RACDB2

   Archive log mode 확인

     SQL> archive log list
        Database log mode              Archive Mode
        Automatic archival             Enabled
        Archive destination            /arch/RACDB1