Raw Device 백업(Cold backup)

 

- Cold backup (닫힌 백업)

1. 양쪽 노드 모드 종료

2. dd 명령어로 복사

 

- Tablespace 정보 확인 (dba_data_files)

Select tablespace_name, bytes/1024/1024 MB,file_name

From dba_data_files;

 

- 양쪽 노드 모드 종료 수행

- dd 명령어로 백업 수행

SQL>!dd if=/dev/raw/raw6 of=/data/backup/open/raw6_system bs=8k

 

Raw Device 백업(Hot backup)

 

- Hot backup

1. 해당 테이블 스페이스를 begin backup 모드로 변경

2. dd 명령어로 복사

3. 해당 테이블 스페이스를 end backup 모드로 변경

 

- Tablespace 정보 확인 (dba_data_files)

Select tablespace_name, bytes/1024/1024 MB,file_name

From dba_data_files;

 

- Hot Backup 수행

SQL>Alter tablespace system begin backup;

SQL>!dd if=/dev/raw/raw6 of=/data/backup/open/raw6_system bs=8k

SQL>alter tablespace system end backup;

 

 

- Hot Backup을 수행 한 다음 체크 포인트를 발생시켜 전체를 동기화 시켜 줍니다.

SQL>alter system checkpoint;

System altered.

Oracle 10g RAC Archive log mod

 

- Archive log mod 변경 (Oracle 10g RAC)

1. 양쪽 노드 전부 Shutdown immediate 수행

2. 한쪽 노드만 Mount 단계

3. alter system set log_archive_dest_1='location=/data/arc1';

4. alter system set log_archive_dest_2='location=/data/arc2';

5. atler database archivelog;

6. alter database open;

7. archive log list 로 결과 확인

8. 다른 쪽 노드에서도 2,3,4 차례로 수행 (5번은 수행할 필요도 없으며 되지도 않는다.

RMAN (Data file 임시 경로에서 복구)

 

- User Table space 를 삭제 한 후 기존 파일 경로 말고 다른 위치에 Restore 하고 Recover 하기

 

- set new name for datafile <번호 또는 경로> to <새 위치 및 파일명>

- 복원 후 반드시 Control file 의 내용을 switch datafile <파일번호> 명령어로 변경 해야 함.

 

 

- USERS Tablespace 를 OS 명령어로 삭제 했습니다.

 

 

 

 

 

 

RMAN>report schema;

- 현재 상태를 확인 합니다.

 

- 다음에서 switch datafile 4 는 위에서 조회한 file 번호를 기재해 주면 됩니다.

 

RMAN 복구 (Offline 안 되는 Tablespace 삭제 후 복구)

    

- System Tablespace 와 같은 Datafile 이 삭제 되었을 시 복구하는 과정 입니다.

 

- System tablespace 의 datafile 을 삭제 한 후 Shutdown abort 시킵니다.

 

RAMN> run{

Startup mount;

Restore database;

Recover database;

Alter database open;

}

 

복구 완료

RMAN 복구 (Datafile 삭제 후 DB Open 상태에서 복구하기)

 

- Testdb 의 Datafile 이 다음과 같습니다.

 

 

- 다음과 같이 clone_test01.dbf 파일을 OS 명령어로 삭제 하였습니다.

 

- 우선 rman 에서 삭제된 Data file 을 offline 시킵니다.

- rman 으로 Backup 파일을 불러 옵니다. (restore)

 

- 이제 복구를 수행하고 offline 되었던 tablespace 를 online 으로 변경합니다.

 

- 다음의 작업을 한번에 작업형 명령어로 복구를 수행할 수도 있습니다.

Recovery Catalog DB 관리하기

1. crosscheck

- 이 명령어는 target 서버와 recovery catalog 간의 정보를 동기화 시켜주는 역할을 합니다.

- 전체 backupset 과 target 서버 비교하기

RMAN>crosscheck backupset;

 

- backupset 을 OS 명령어로 삭제 후 다시 crosscheck 수행

 

- EXPIRED 된 것을 보면 이것은 BACKUPSET 목록에 존재하지만 실제 파일은 존재하지 않는다는 의미입니다. 백업 파일을 삭제 할 때도 RMAN 명령어로 삭제해 주어야 하며 그렇지 않을 시 위처럼 문제가 발생하게 됩니다.

2. delete

- 특정 backupset 을 삭제하고자 할 때 사용하는 명령어

- 목록 확인

RMAN>list backupset;

- 현재 backupset 목록 확인 후 특정 backupset 삭제하기

RMAN>delete backupset <number>;

 

3. catalog(관리자가 수동 백업 받은 파일을 RMAN catalog 에 추가하여 관리)

- example tablespace 를 RMAN 이 아닌 begin backup 수행

- RMAN Recovery Catalog 에 example 파일이 있는지 확인 합니다.

- 아직 정보가 없음을 확인 할 수 있습니다.

- Catalog 명령어로 Recovery Catalog 에 추가합니다.

 

- change 와 uncatalog 명령 (삭제 시)

- 리스트에 없는 것을 확인 할 수 있습니다.

 

Catalog Server 구성 테스트

- 시나리오

à 현재 복구 서버에 접속한 상태에서 rclient 에서 전체 백업을 수행

à 그 후 testdb에서 모든 control file 을 삭제한 후 DB를 종료

à 이 장애는 catalog server 를 사용하지 않으면 복구가 안 되는 장애이므로 catalog server 를 이용하여 복구

- 오류 발생 testdb 서버가 Noarchive log mode 였다.

- 다시 archive log mode 로 변경한 후 다시 실행해 봅니다.

- 다시 정상적으로 백업 되는 것을 확인 할 수 있습니다.

- 이제 testdb 의 컨트롤 파일을 모두 삭제하고 DB 를 재시작 해 보겠습니다.

 

- 이제 RMAN 으로 catalog server 에 접속해서 복구를 시작합니다.

- testdb 서버에서 restore controlfile 명령어를 실행하면 복구가 되는 것을 확인 할 수 있습니다.

- 다음을 통해 컨트롤 파일이 복구 된 것을 확인할 수 있습니다.

- 어라 abort 로 껐는데 복구 없이 올라온다. 이렇게 되면 안되는데 이상하다.

다시 한번 시도!! 컨트롤 지우고 다시 해봐야겠다

- 그래 이렇게 나와야 한다. 자세한 내용은 admin 에서… abort 로 종료를 하게되면 dirty database 가 되기 때문에 다음과 같이 나오게 된다

- 아차 싶다…. Redo log 파일은 rman 백업 대상에 제외된다. 또한 방금 resetlogs 옵션으로 DB를 올렸기 때문에 incanation number 가 증가 되었을 것이다. 그렇기 때문에 기존의 컨트롤 파일로 rman 으로 복구한 후 recover 를 하려 했으나 되질 않는다. 또한 Datafile 과 컨트롤 파일의 scn 또한 틀릴 것이다.

-Resetlogs 옵션으로 올린 후 꼭 백업을 다시 받아야 한다는 교훈을 새삼 느끼는 순간이다.

 

- 다른 방법으로 살렸다… 조심하자..

+ Recent posts