DB/Oracle Administrator

오라클 백업 및 복구(RMAN)

soccerda 2012. 7. 6. 01:24
반응형
 
1. RMAN으로 데이터 복구
가. Drop table 복구
<장애상황 만들기>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- 테이블 생성 및 데이터 삽입
create table scott.aaa (no number) tablespace example;
insert into scott.aaa values (1);
insert into scott.aaa values (2);
commit;
select * from scott.aaa;
-- 시간 확인
select to_char(sysdate, 'RRRR-MM-DD:HH24:MI:SS') TIME from dual;
-- 장애발생
drop table scott.aaa purge;

< RMAN으로 복구하기>
$ rman target / catalog rcuser/rcuser@rcserver

RMAN> shutdown immediate;

RMAN> run {
startup mount;
sql 'alter session set nls_date_format="RRRR-MM-DD:HH24:MI:SS"';
set until time='2012-02-24:22:48:51';
restore database;
recover database;
alter database open resetlogs;
}
1
2
--복구 데이터 확인
select * from scott.aaa;


나. 장애난 서버가 아닌 다른서버에서의 DB복구

< DB 백업 >
$ rman target / catalog rcuser/rcuser@rcserver

RMAN> run {
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;

backup as compressed backupset
format '/data/backup/rman/data_%U_%T'
database;

backup as compressed backupset
format '/data/backup/rman/arch_%U_%T'
archivelog all;

backup as compressed backupset
format '/data/backup/rman/ctl_%U_%T'
current controlfile;
}

<장애상황 만들기>
1
2
3
4
5
6
7
8
9
10
-- 테스트용 테이블 생성
create table scott.bbb (no number) tablespace users;
insert into scott.bbb values (1);
insert into scott.bbb values (2);
insert into scott.bbb values (3);
commit;
select * from scott.bbb;


$ rm /app/oracle/oradata/testdb/*

1
shutdown abort;


$ vi $ORACLE_HOME/dbs/inittestdb.ora
*.control_files='/data/temp/control01.ctl'

$ rman target / catalog rcuser/rcuser@rcserver

RMAN> startup nomount;

RMAN> restore controlfile from '/data/backup/rman/ctl_0qn45h3e_1_1_20120224';

RMAN> alter database mount;

RMAN> report schema;

RMAN> run {
#채널 설정
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;

#데이터 이름 변경
set newname for datafile 1 to '/data/temp/system01.dbf';
set newname for datafile 2 to '/data/temp/sysaux01.dbf';
set newname for datafile 3 to '/data/temp/undotbs01.dbf';
set newname for datafile 4 to '/data/temp/users01.dbf';
set newname for datafile 5 to '/data/temp/example01.dbf';

# 파일 복원
restore database;

# controlfile에 저장
switch datafile all;
}

$ sqlplus / as sysdba
1
2
3
4
recover database until cancel using backup controlfile;
auto
alter database open resetlogs;


2. RMAN 환경 변수
가. 현재 환경변수 보기
RMAN> show all;

나. 백업파일 보존기간 설정(day)
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 1 DAYS;

다. 백업본의 개수 지정(개)
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 1;

라. 백업수행 시 병렬 프로세스 개수
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET;

마. 컨트롤파일 자동 백업
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/data/backup/rman/%F';

바. backupset의 최대크기 무제한
RMAN> CONFIGURE MAXSETSIZE TO UNLIMITED;

사. 중복 백업데이터 보관
RMAN> CONFIGURE BACKUP OPTIMIZATION OFF;

아. 백업파일 하나당 최대크기 지정
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 100M;
반응형

'DB > Oracle Administrator' 카테고리의 다른 글

Oracle에서 parameter 정보 확인  (0) 2012.07.06
오라클 에러코드(한글)  (0) 2012.07.06
오라클 백업 및 복구(RMAN)  (0) 2012.07.06
오라클 수동 DB생성  (0) 2012.07.06
오라클 백업 및 복구(Flashback)  (0) 2012.07.06