Recovery Catalog
복구 카탈로그
RMAN 사용시에 RMAN으로 백업 복구 작업을 하고 관련 정보를 저장해 두는 저장소
Recovery Catalog Server가 없을 경우,
RMAN은 Target Database Server의 control file에 해당 정보를 저장
접속 방법은 Target DB에서 $ rman target /
Recovery Catalog Server가 있을 경우,
RMAN은 Recovery Catalog Server 에 정보를 저장
저장되는 정보들은
- Data file 및 Archive Redo Log file의 백업 셋과 copy된 이미지에 대한 정보
- 백업 대상 서버의 물리적인 구조
- 자주 사용하는 백업 스크립트 -> 이거는 Recovery Catalog Server를 사용할 경우만 해당
접속방법은 Target DB에서
$ rman target / catalog rcuser/rcuser@rcserver
※ 유닉스 계열에서 RMAN 실행시 에러나는 경우
원래는 RMAN 실행 파일은 $ORACLE_HOME/bin/rman 인데 리눅스에서 oracle 설치 후 경로가 바뀌는 경우가 있음
조치 방법
$ which rman
$ su -
# cp $ORACLE_HOME/bin/rman /usr/X11R6/bin
# exit
Recovery Catalog Server 구성
Recovery Catalog Server Clone DB로 구성하기 (11g)
Target Database Server SID = testdb (rcclient라고 하겠음 편하게)
Recovery Catalog Server SID = rcserver, 경로는 /data/rcserver/
Clone DB 생성
1. Target Database Server 의 parameter file(pfile) 복사하기
$ cd /app/oracle/product/11g/dbs
$ cp inittestdb.ora initrcserver.ora
2. parameter file 수정
$ vi initrcserver.ora
control file 경로 수정
db_name 수정
memory_target파라미터 주석처리
3. 백업된 Data file 복사해서 옮기기
$ cp /data/backup/close/*.dbf /data/rcserver
4. Recovery Catalog Server의 control file 생성을 위한 스크립트 생성 및 수정
> alter database backup controlfile to trace as '/home/oracle/rcserverctl.sql
$ vi /home/oracle/rcserverctl.sql
SET DATABASE "RCSERVER" RESETLOGS
logfile, datafile 경로 바꿔주기
5. rcserver로 접속
$ export ORACLE_SID=rcserver
$ sqlplus / as sysdba
6. 스크립트를 사용해 DB OPEN
> @/home/oracle/rcserverctl.sql
> alter database open resetlogs ;
7. rcclient에서 tnsnames.ora / listener.ora 수정후 dblink 생성
$ export ORACLE_SID=testdb
$ cd /app/oracle/product/11g/network/admin/
$ vi tnsnames.ora
RCSERVER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.140.128)(PORT = 1524))
)
(CONNECT_DATA =
(SERVICE_NAME = rcserver)
)
)
$ vi listener.ora
LISTENER4 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = server103)(PORT = 1524))
)
)
SID_LIST_LISTENER4 =
(SID_LIST=
(SID_DESC =
(SID_NAME = rcserver)
(ORACLE_HOME = /app/oracle/product/11g)
)
)
$ sqlplus / as sysdba
> create database link rclink
connect to rcuser identified by rcuser
using 'rcserver' ;
8. rcclient에서 rcserver로 접속
rcserver:
$ lsnrctl start
rcclient:
$ lsnrctl
> start listener4
> exit
$ tnsping rcserver
Recovery Catalog 생성 및 등록 작업
9. rcserver에서 복구 카탈로그 저장할 테이블 스페이스, 관리할 계정 생성 및 권한 부여
(새터미널 열어서 작업하기 헤갈리니까)
$ export ORACLE_SID=rcserver
$ sqlplus / as sysdba
> create tablespace rc_tbs01
datafile '/data/rcserver/rc_tbs01.dbf' size 10M
autoextend on ;
> create user rcuser identified by rcuser
default tablespace rc_tbs01
temporary tablespace temp ;
> grant conect, resource, recovery_catalog_owner to rcuser ;
10. rcclient에서 RMAN으로 Recovery Catalog Server에 접속 및 복구 카탈로그 생성, 등록
$ rman target / catalog rcuser/rcuser@rcserver
> create catalog tablespace rc_tbs01 ;
> register database ;
11. 마지막 확인 작업들
rcserver:
> conn rcuser/rcuser
> select * from rc_database ;
--> rcclient 가 등록된 내용이 조회되어야 함
data file 조회로도 확인 가능
rcclient:
> select tablespace_name, bytes/1024/1024 MB, file_name from dba_data_files ;
rcserver:
> select db_name, tablespace_name, name "file_name" from rc_datafile ;
--> 두 내용이 동일해야 함
[작업 내용]
※ Catalog Server 구성 테스트 ※
rcclient에서 모든 control file 삭제되는 장애 발생 --> 이 장애는 catalog server 사용 안하면 복구가 안됨
rcclient에서 우선 전체 백업 수행
RMAN> backup database ;
그냥하면 에러 발생하니까 default channel 설정하기 (자세한 내용은 밑에 channel 설명 참고)
RMAN> configure channel device type disk format '/data2/backup/rman/%U_%T' ;
컨트롤 파일 삭제후 shutdown abort
rcclient 에서 catalog server로 접속
$ rman target / catalog rcuser/rcuser@rcserver
RMAN> restore controlfile ;
RMAN> alter database mount ;
RMAN> alter database open resetlogs ; -> control file이 삭제되었으니 당연히 resetlogs로 open
shutdown abort, DB 비정상 종료 했기 때문에 datafile 에러로 복구 안될거임
RMAN> recover database;
RMAN> alter database open resetlogs ;
[작업 내용]
Recovery Catalog DB 관리
1. Crosscheck
Target Server와 Recovery Catalog간의 정보를 동기화 시키는 명령어
전체 backupset과 target 서버 비교
RMAN> crosscheck backupset ;
'AVAILABLE' 이 떠야 정상적인 것, target에도 catalog 에도 있다는 뜻
'EXPIRED' 라고 뜨면 backupset 목록에는 있는데 실제 백업 파일이 삭제되고 없다는 의미
'EXPIRED' 된 목록 삭제
RMAN> delete expired backupset ;
따라서 백업파일 지울때도 RMAN 명령어로 삭제해야 함
[예제]
2. Delete
특정 backupset을 삭제하고자 할 때 사용하는 명령어, backupset은 반드시 OS 명령어가 아닌 이 명령어로 삭제
RMAN> delete backupset # ;
여기서 # 에 들어가야할 숫자는 BS Key 즉, backupset number를 뜻함
backupset 리스트를 보려면 list backupset ;
[예제]
3. Catalog / change uncatalog
관리자가 수동 백업 받은 파일을 RMAN Catalog에 추가해서 관리하는 방법
begin backup 받은 파일을 Recovery Catalog에 등록해서 RMAN에서도 작업할 수 있게끔 함
RMAN> catalog datafilecopy '경로' ;
begin backup 파일 내역 확인하는 방법
RMAN> list datafilecopy all ;
catalog에 등록된 것을 삭제하고 싶을 때는
RMAN> change datafilecopy '경로' uncatalog ;
[예제]
channel
백업과 복구를 하는 경로를 의미
백업을 수행하기 전에 channel 을 할당해줘야지 RMAN 이 백업,복구를 수행 할 수 있다
자동 channel 할당
백업할 때 별도의 경로를 주지 않아도 정해진 위치로 백업 받음 = default channel
자동 채널 설정하는 명령어 즉, 자동채널에 백업 받아라~
RMAN> configure default device type to disk ;
이렇게 설정하면 default device가 파라미터 파일에서 db_recovery_file_dest 파라미터 경로로 설정됨
11g 경우는 fast_recovery_area 인데 용량 부족의 문제가 있으니
(기본이 2G라서 금방 찰 뿐더러, 가득차게되면 DB Hang이 발생)
특정한 경로로 default device로 설정해야함
RMAN> configure channel device type disk format '경로/%U_%T' ;
앞으로 특별한 경로 없이 백업을 수행하면 이 곳에 백업이 수행된다
%U_%T
--> 파일명이 중복되지 않도록 RMAN이 Unique한 번호와 백업 날짜로 파일 이름 생성하면서 백업 수행
백업 경로가 지정한 default device로 잘 되고 있는지 확인하려면
내용중 piece handle=~~ 를 참고하면 됨
[예제]
수동 channel 할당
백업을 수행할 때 백업 받을 경로를 직접 지정해 줌
명령어에 format '경로' ; 를 넣어주면 됨
자세한 내용은 백업 부분을 참고
예)
독립형 명령어
RMAN> backup tablespace users format 'format '/data/backup/close/%U_%T' ;
작업형 명령어
RMAN> run {
allocate channel c1 type disk
format '/data/backup/close/%U_%T' ;
backup tablespace example ;
}
'오라클 백업/복구' 카테고리의 다른 글
RMAN - 복구 (완전 복구) (0) | 2013.02.19 |
---|---|
RMAN - 백업 (0) | 2013.02.19 |
Flashback 3 - Database Level (0) | 2013.02.17 |
Flashback 2 - Table Level (0) | 2013.02.14 |
Flashback 1 - Row Level (0) | 2013.02.13 |