Oracle/backup

RMAN (Recovery Manager)

pbj1102 2022. 1. 26. 10:31
반응형

RMAN (Recovery Manager)

:RMAN 에게 명령하고 백업복구의 주체가 RMAN.
-> 원래는 관리자가 직접 백업 하고 장애 발생시 적절한 백업파일을 찾아 복구하는 방식.

V$RMAN_OUTPUT

V$RMAN_BACKUP_JOB_DETAILS

V$BACKUP_PIECE



- 10G 부터는 ASM (Automatic Storage Management) 기반의 백업 및 복구는 RMAN 만 할 수 있다. 


- Rman 의 장점
1. 자주 실행하는 작업을 스크립트로 저장(Recovery Catalog 사용할 경우)
: 규모가 큰 DB의 경우 백업 수행시 코딩하는 양이 많음. 
: 자주 사용하는 백업 명령어를 스크립트로 저장한 후 불러와서 사용 가능.

2. 증분 블록 레벨 백업 기능 지원
: 이전 백업받은 내역을 조사해 변경된 블록만 찾아서 백업 수행.

3. 사용되지 않은 블록 건너뛰고 백업 수행
: 100M 할당된 파일에서 실제 작은 용량만 사용하더라도 전체 100M를 백업받아야 했지만,
RMAN의 경우 현재 사용 블록만 찾아서 백업 수행. 
backupset 으로 백업 수행할 경우 자동으로 지원

4. 백업 수행중 훼손된 블록 감지
: 일반적으로 백업에서는 파일을 백업하던 도중에 훼손된 블록이 있을 경우 장애가 발생하고 백업이 중단.
-> RMAN에서는 백업 수행 도중 훼손된 블록을 감지해서 마킹해 두고 계속 백업 진행됨.

5. 백업된 파일 압축
: 기존은 100M백업을 받으려면 해당 용량의 백업 공간이 필요했지만, 
RMAN 의 경우 압축되어 저장되기 때문에 더 적은 공간이 필요로함.




구성도.RMAN


Target DB <------------> RMAN   <-------------> DBA
           (관리되어지는 DB) ↑
    채널      <-------------- ┴ -----------------> Catalog Database (Recovery Catalog Server)
                                                               복구 카탈로그 DB


Target DB  : 관리자(DBA)를 대신하여 RMAN 유틸리티가 관리해주는 서버.
채널  : 백업 파일이 저장되어지는 저장장치 (DISK, MML 등...)
Recovery Catalog Server : 백업에 관련된 정보가 저장되는 외부 서버, 해당서버의 Catalog Database 에 저장된다.
: 해당 서버가 없다면 기본적으로 Target Database 의 control file에 기록됨.




RMAN Memory 구조
: RMAN 백업복구를 수행할때 기본적으로 PGA를 사용.
공간이 부족할 경우 SGA(Large Pool, Shared pool)을 사용하여 백업을 수행.




Input Buffer : 백업 받을 때 사용하는 버퍼
Output Buffer : 백업 피스(백업파일)에 저장하기 위해 사용하는 버퍼
Backup Set : RMAN 으로 백업 받으면 만들어지는 백업파일. 
     기존 백업파일과는 다르게 하나의 백업파일에 여러 Data File 의 블록이 백업됨

1) Data File 에서 Input buffer 로 백업 받아야 할 블록을 가져옴
2) 여러개의 Input Buffer 중 하나가 가득차면 Output Buffer 로 블록을 복사함
-> Output buffer 에는 여러 Data File의 블록이 혼합되어 존재.
3) Output Buffer 가득차게 되면 Backup Set 에 내려쓰게 됨.





Input Buffer 사용내역 및 크기 조회

select set_count, device_type, filename, buffer_size, buffer_count, open_time, close_time
from v$backup_async_io
order by set_count, type, open_time, close_time;




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



백업을 넣을 catalog 서버가 없어서... 아래처럼 접속.

target = 10.0.113.217






[oracle@DBTEST ~]$ rman target sys/oracle

Recovery Manager: Release 11.2.0.1.0 - Production on Fri Mar 11 16:32:33 2016

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (DBID=1427591565)

RMAN> 

RMAN> 

RMAN> 





tablespace TBS_TEST를 백업 시작

RMAN> backup tablespace TBS_TEST;


Starting backup at 11-MAR-16
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=20 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00025 name=/home/oracle/ts/TBS_TEST01.dbf
channel ORA_DISK_1: starting piece 1 at 11-MAR-16
channel ORA_DISK_1: finished piece 1 at 11-MAR-16
piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2016_03_11/o1_mf_nnndf_TAG20160311T163358_cg4x76bz_.bkp tag=TAG20160311T163358 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 11-MAR-16





경로를 확인해 보니...  아래에 떨어짐... default 경로 인듯
/u01/app/oracle/flash_recovery_area/ORCL/backupset/2016_03_11/o1_mf_nnndf_TAG20160311T163358_cg4x76bz_.bkp tag=TAG20160311T163358






경로 설정하여 다시 백업. 

RMAN> backup tablespace TBS_TEST format '/home/oracle/backup/%U_%T'; 

Starting backup at 11-MAR-16
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00025 name=/home/oracle/ts/TBS_TEST01.dbf
channel ORA_DISK_1: starting piece 1 at 11-MAR-16
channel ORA_DISK_1: finished piece 1 at 11-MAR-16
piece handle=/home/oracle/backup/03r07nbf_1_1_20160311 tag=TAG20160311T163559 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 11-MAR-16



확인
[oracle@DBTEST backup]$ ll
total 1099832
-rw-r----- 1 oracle oinstall   77635584 Mar 11 16:35 03r07nbf_1_1_20160311
-rw-r----- 1 oracle oinstall 1048584192 Mar 11 16:09 system01.dbf.bak








아래와 같이 스크립트를 이용하여 백업받는것도 가능. 여러 개의 명령어를 한번에 사용할 수 있음.


RMAN> run{
2> allocate channel c1 type disk;
3> backup      
4> incremental level 0
5> tablespace TBS_TEST channel c1
6> format '/home/oracle/backup/%U_%T';
7> }

allocated channel: c1
channel c1: SID=20 device type=DISK

Starting backup at 11-MAR-16
channel c1: starting incremental level 0 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00025 name=/home/oracle/ts/TBS_TEST01.dbf
channel c1: starting piece 1 at 11-MAR-16
channel c1: finished piece 1 at 11-MAR-16
piece handle=/home/oracle/backup/05r07nsk_1_1_20160311 tag=TAG20160311T164508 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 11-MAR-16
released channel: c1












incremental
증분 백업 - 이전에 백업받았던 백업파일과 비교해서 변경된 부분만 골라서 백업을 수행



테스트를 위해 유저 생성.
user tablespace
RMAN 123 OPEN TBS_TEST

테이블 생성
select * from a1;

pbj 1
p 2
p 2
d 3
p 4
p 5
p 6
p 7




[oracle@DBTEST backup]$ ll
total 1175768
-rw-r----- 1 oracle oinstall   77635584 Mar 11 16:35 03r07nbf_1_1_20160311
-rw-r----- 1 oracle oinstall   77635584 Mar 11 16:45 05r07nsk_1_1_20160311




N> 

RMAN> run{
2> allocate channel c1 type disk;
3> backup
4> incremental level 1
5> tablespace TBS_TEST channel c1
6> format '/home/oracle/backup/%U_%t';
7> }

allocated channel: c1
channel c1: SID=20 device type=DISK

Starting backup at 11-MAR-16
channel c1: starting incremental level 1 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00025 name=/home/oracle/ts/TBS_TEST01.dbf
channel c1: starting piece 1 at 11-MAR-16
channel c1: finished piece 1 at 11-MAR-16
piece handle=/home/oracle/backup/06r07o5i_1_1_906223794 tag=TAG20160311T164954 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 11-MAR-16
released channel: c1






120k 만 백업된것을 확인.


사이즈를 확인하면 75m 라는것을 확인 할 수 있다.
rman 은 압축으로 백업이 가능하다.

[oracle@DBTEST backup]$ ll -h
total 1.2G
-rw-r----- 1 oracle oinstall   75M Mar 11 16:35 03r07nbf_1_1_20160311
-rw-r----- 1 oracle oinstall   75M Mar 11 16:45 05r07nsk_1_1_20160311
-rw-r----- 1 oracle oinstall  120K Mar 11 16:49 06r07o5i_1_1_906223794





TBS_TEST /home/oracle/ts/TBS_TEST01.dbf 100 74.0625









RMAN> backup as compressed backupset tablespace TBS_TEST
2> format '/home/oracle/backup/%U_%T';

Starting backup at 11-MAR-16
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=20 device type=DISK
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00025 name=/home/oracle/ts/TBS_TEST01.dbf
channel ORA_DISK_1: starting piece 1 at 11-MAR-16
channel ORA_DISK_1: finished piece 1 at 11-MAR-16
piece handle=/home/oracle/backup/07r07pbs_1_1_20160311 tag=TAG20160311T171020 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 11-MAR-16





10M 로  압축되어 백업 받아진것을 확인.

[oracle@DBTEST backup]$ ll -h
total 1.2G
-rw-r----- 1 oracle oinstall   75M Mar 11 16:35 03r07nbf_1_1_20160311
-rw-r----- 1 oracle oinstall   75M Mar 11 16:45 05r07nsk_1_1_20160311
-rw-r----- 1 oracle oinstall  120K Mar 11 16:49 06r07o5i_1_1_906223794
-rw-r----- 1 oracle oinstall   10M Mar 11 17:10 07r07pbs_1_1_20160311





압축하면서 아카이브 파일도 같이 백업. 

아래의 명령어의 경우 tablespace 를 지정하지 않았기 때문에 아카이브만을 백업함.


RMAN> backup as compressed backupset archivelog all
2> format '/home/oracle/backup/%U_%T';

Starting backup at 11-MAR-16
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=625 RECID=1 STAMP=906126757
input archived log thread=1 sequence=626 RECID=2 STAMP=906126757
input archived log thread=1 sequence=627 RECID=3 STAMP=906126758
input archived log thread=1 sequence=628 RECID=4 STAMP=906139577
input archived log thread=1 sequence=629 RECID=5 STAMP=906156017
input archived log thread=1 sequence=630 RECID=6 STAMP=906156044
input archived log thread=1 sequence=631 RECID=7 STAMP=906157375
input archived log thread=1 sequence=632 RECID=8 STAMP=906174003
input archived log thread=1 sequence=633 RECID=9 STAMP=906202815
input archived log thread=1 sequence=634 RECID=10 STAMP=906225122
channel ORA_DISK_1: starting piece 1 at 11-MAR-16
channel ORA_DISK_1: finished piece 1 at 11-MAR-16
piece handle=/home/oracle/backup/08r07pf2_1_1_20160311 tag=TAG20160311T171202 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:08
Finished backup at 11-MAR-16




73M 백업 된것을 확인.
[oracle@DBTEST backup]$ ll -h
total 1.3G
-rw-r----- 1 oracle oinstall   75M Mar 11 16:35 03r07nbf_1_1_20160311
-rw-r----- 1 oracle oinstall   75M Mar 11 16:45 05r07nsk_1_1_20160311
-rw-r----- 1 oracle oinstall  120K Mar 11 16:49 06r07o5i_1_1_906223794
-rw-r----- 1 oracle oinstall   10M Mar 11 17:10 07r07pbs_1_1_20160311
-rw-r----- 1 oracle oinstall   73M Mar 11 17:12 08r07pf2_1_1_20160311






SYS> SELECT SID,SERIAL#,CONTEXT,SOFAR,TOTALWORK,

  2    ROUND(SOFAR/TOTALWORK*100,2)"%COMPLETE"

  3    FROM V$SESSION_LONGOPS 

  4    WHERE OPNAME LIKE 'RMAN%'

  5    AND OPNAME NOT LIKE '%aggregate%'

  6    AND TOTALWORK!=0

  7    AND SOFAR<>TOTALWORK 

SID SERIAL# CONTEXT SOFAR TATALWORK %COMPLETE
19 1230 1 593534 649472 91.39



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

1. 전체 데이터 베이스 압축 백업

1) 독립형


RMAN> backup as compressed backupset database
2> format '/home/oracle/rman/full_%U_%T';

Starting backup at 11-MAR-16
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=19 device type=DISK
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00002 name=/u01/app/oracle/oradata/orcl/sysaux01.dbf
input datafile file number=00001 name=/u01/app/oracle/oradata/orcl/system01.dbf
input datafile file number=00003 name=/u01/app/oracle/oradata/orcl/undotbs01.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf
input datafile file number=00021 name=/home/oracle/scott_idx01.dbf
input datafile file number=00005 name=/u01/app/oracle/oradata/orcl/example01.dbf
input datafile file number=00006 name=/u01/app/oracle/oradata/orcl/tbs_a_01.dbf
input datafile file number=00007 name=/u01/app/oracle/oradata/orcl/tbs_a_02.dbf
input datafile file number=00011 name=/u01/app/oracle/oradata/orcl/tbs_c_01.dbf
input datafile file number=00014 name=/home/oracle/pbj_temp01.dbf
input datafile file number=00017 name=/home/oracle/ts/DATA01.dbf
input datafile file number=00025 name=/home/oracle/ts/TBS_TEST01.dbf
input datafile file number=00009 name=/u01/app/oracle/oradata/orcl/undotbs02.dbf
input datafile file number=00010 name=/u01/app/oracle/oradata/orcl/undotbs02_2.dbf
input datafile file number=00012 name=/u01/app/oracle/oradata/orcl/tbs_d_01.dbf
input datafile file number=00008 name=/u01/app/oracle/oradata/orcl/tbs_b_01.dbf
input datafile file number=00026 name=/u01/app/oracle/oradata/orcl/rc_tbs.dbf
channel ORA_DISK_1: starting piece 1 at 11-MAR-16
channel ORA_DISK_1: finished piece 1 at 11-MAR-16
piece handle=/home/oracle/backup/09r07s8u_1_1_20160311 tag=TAG20160311T175957 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:15
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 11-MAR-16
channel ORA_DISK_1: finished piece 1 at 11-MAR-16
piece handle=/home/oracle/backup/0ar07sb9_1_1_20160311 tag=TAG20160311T175957 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 11-MAR-16





[oracle@DBTEST backup]$ ll -h
total 489M
-rw-r----- 1 oracle oinstall 488M Mar 11 18:01 09r07s8u_1_1_20160311
-rw-r----- 1 oracle oinstall 1.1M Mar 11 18:01 0ar07sb9_1_1_20160311



run {
allocate channel ch1 device type disk
format '/home/oracle/rman/full_%U_%T'
backup as compressed backupset database;
}





2. 채널 3개를 사용하여 user, control file, TBS_TEST, TBS_A 백업

RMAN> RUN{
2> allocate channel c1 device type disk;
3> allocate channel c2 device type disk;
4> allocate channel c3 device type disk;
5> backup as compressed backupset
6> tablespace users channel c1
7> format '/home/oracle/backup/%U_%T';
8> 
9> backup as compressed backupset
10> tablespace TBS_TEST channel c2
11> format '/home/oracle/backup/%U_%T';
12> 
13>  backup as compressed backupset
14> tablespace TBS_A channel c3
15> format '/home/oracle/backup/%U_%T';
16> 
17> backup current controlfile
18> format '/home/oracle/backup/ctl_%U_%T';
19> }

released channel: ORA_DISK_1
allocated channel: c1
channel c1: SID=19 device type=DISK

allocated channel: c2
channel c2: SID=133 device type=DISK

allocated channel: c3
channel c3: SID=28 device type=DISK

Starting backup at 11-MAR-16
channel c1: starting compressed full datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf
channel c1: starting piece 1 at 11-MAR-16
channel c1: finished piece 1 at 11-MAR-16
piece handle=/home/oracle/backup/0br07v1b_1_1_20160311 tag=TAG20160311T184707 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:07
Finished backup at 11-MAR-16

Starting backup at 11-MAR-16
channel c2: starting compressed full datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00025 name=/home/oracle/ts/TBS_TEST01.dbf
channel c2: starting piece 1 at 11-MAR-16
channel c2: finished piece 1 at 11-MAR-16
piece handle=/home/oracle/backup/0cr07v1i_1_1_20160311 tag=TAG20160311T184714 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:03
Finished backup at 11-MAR-16

Starting backup at 11-MAR-16
channel c3: starting compressed full datafile backup set
channel c3: specifying datafile(s) in backup set
input datafile file number=00006 name=/u01/app/oracle/oradata/orcl/tbs_a_01.dbf
input datafile file number=00007 name=/u01/app/oracle/oradata/orcl/tbs_a_02.dbf
channel c3: starting piece 1 at 11-MAR-16
channel c3: finished piece 1 at 11-MAR-16
piece handle=/home/oracle/backup/0dr07v1l_1_1_20160311 tag=TAG20160311T184717 comment=NONE
channel c3: backup set complete, elapsed time: 00:00:01
Finished backup at 11-MAR-16

Starting backup at 11-MAR-16
channel c1: starting full datafile backup set
channel c1: specifying datafile(s) in backup set
including current control file in backup set
channel c1: starting piece 1 at 11-MAR-16
channel c1: finished piece 1 at 11-MAR-16
piece handle=/home/oracle/backup/ctl_0er07v1m_1_1_20160311 tag=TAG20160311T184718 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 11-MAR-16
released channel: c1
released channel: c2
released channel: c3





[oracle@DBTEST backup]$ ll -h
total 560M
-rw-r----- 1 oracle oinstall 488M Mar 11 18:01 09r07s8u_1_1_20160311
-rw-r----- 1 oracle oinstall 1.1M Mar 11 18:01 0ar07sb9_1_1_20160311
-rw-r----- 1 oracle oinstall  47M Mar 11 18:47 0br07v1b_1_1_20160311
-rw-r----- 1 oracle oinstall  10M Mar 11 18:47 0cr07v1i_1_1_20160311
-rw-r----- 1 oracle oinstall 4.8M Mar 11 18:47 0dr07v1l_1_1_20160311
-rw-r----- 1 oracle oinstall 9.7M Mar 11 18:47 ctl_0er07v1m_1_1_20160311






3. 전체 데이터 파일 위치 확인 후 파일번호로 TBS_B 백업






RMAN> report schema;

Report of database schema for database with db_unique_name ORCL

List of Permanent Datafiles
===========================
File Size(MB) Tablespace           RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1    1000     SYSTEM               ***     /u01/app/oracle/oradata/orcl/system01.dbf
2    1500     SYSAUX               ***     /u01/app/oracle/oradata/orcl/sysaux01.dbf
3    1000     UNDOTBS1             ***     /u01/app/oracle/oradata/orcl/undotbs01.dbf
4    365      USERS                ***     /u01/app/oracle/oradata/orcl/users01.dbf
5    100      EXAMPLE              ***     /u01/app/oracle/oradata/orcl/example01.dbf
6    100      TBS_A                ***     /u01/app/oracle/oradata/orcl/tbs_a_01.dbf
7    100      TBS_A                ***     /u01/app/oracle/oradata/orcl/tbs_a_02.dbf
8    50       TBS_B                ***     /u01/app/oracle/oradata/orcl/tbs_b_01.dbf
9    85       UNDOTBS2             ***     /u01/app/oracle/oradata/orcl/undotbs02.dbf
10   85       UNDOTBS2             ***     /u01/app/oracle/oradata/orcl/undotbs02_2.dbf
11   100      TBS_C                ***     /u01/app/oracle/oradata/orcl/tbs_c_01.dbf
12   79       TBS_D                ***     /u01/app/oracle/oradata/orcl/tbs_d_01.dbf
14   100      PBJ_TEMP             ***     /home/oracle/pbj_temp01.dbf
17   100      DATA01               ***     /home/oracle/ts/DATA01.dbf
21   200      TBS_SCOTT_IDX        ***     /home/oracle/scott_idx01.dbf
25   100      TBS_TEST             ***     /home/oracle/ts/TBS_TEST01.dbf
26   10       RC_TBS01             ***     /u01/app/oracle/oradata/orcl/rc_tbs.dbf

List of Temporary Files
=======================
File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1    47       TEMP                 32767       /u01/app/oracle/oradata/orcl/temp01.dbf
2    29       TEMP2                29          /u01/app/oracle/oradata/orcl/temp02.dbf
5    29       TEMP3                29          /u01/app/oracle/oradata/orcl/temp03.dbf
7    100      TEMP4                100         /u01/app/oracle/oradata/orcl/temp4.dbf
8    50       TEMP5                50          /u01/app/oracle/oradata/orcl/temp5.dbf






RMAN> run{
2> allocate channel c1 type disk;
3> backup as compressed backupset datafile 8
4> format '/home/oracle/backup/TBS_B_%U_%T';
5> }

allocated channel: c1
channel c1: SID=19 device type=DISK

Starting backup at 11-MAR-16
channel c1: starting compressed full datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00008 name=/u01/app/oracle/oradata/orcl/tbs_b_01.dbf
channel c1: starting piece 1 at 11-MAR-16
channel c1: finished piece 1 at 11-MAR-16
piece handle=/home/oracle/backup/TBS_B_0gr07v6t_1_1_20160311 tag=TAG20160311T185005 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 11-MAR-16
released channel: c1





[oracle@DBTEST backup]$ ll -h
total 562M
-rw-r----- 1 oracle oinstall 488M Mar 11 18:01 09r07s8u_1_1_20160311
-rw-r----- 1 oracle oinstall 1.1M Mar 11 18:01 0ar07sb9_1_1_20160311
-rw-r----- 1 oracle oinstall  47M Mar 11 18:47 0br07v1b_1_1_20160311
-rw-r----- 1 oracle oinstall  10M Mar 11 18:47 0cr07v1i_1_1_20160311
-rw-r----- 1 oracle oinstall 4.8M Mar 11 18:47 0dr07v1l_1_1_20160311
-rw-r----- 1 oracle oinstall 2.3M Mar 11 18:50 TBS_B_0gr07v6t_1_1_20160311
-rw-r----- 1 oracle oinstall 9.7M Mar 11 18:47 ctl_0er07v1m_1_1_20160311





4. 현재 사용중인 컨트롤파일만 백업





RMAN>  run {
2> allocate channel c1 type disk;
3> backup current controlfile
4> format '/home/oracle/backup/current_ctl_%U_%T';
5> }

allocated channel: c1
channel c1: SID=19 device type=DISK

Starting backup at 11-MAR-16
channel c1: starting full datafile backup set
channel c1: specifying datafile(s) in backup set
including current control file in backup set
channel c1: starting piece 1 at 11-MAR-16
channel c1: finished piece 1 at 11-MAR-16
piece handle=/home/oracle/backup/current_ctl_0hr07vad_1_1_20160311 tag=TAG20160311T185157 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 11-MAR-16
released channel: c1



[oracle@DBTEST backup]$ ll -h
total 572M
-rw-r----- 1 oracle oinstall 488M Mar 11 18:01 09r07s8u_1_1_20160311
-rw-r----- 1 oracle oinstall 1.1M Mar 11 18:01 0ar07sb9_1_1_20160311
-rw-r----- 1 oracle oinstall  47M Mar 11 18:47 0br07v1b_1_1_20160311
-rw-r----- 1 oracle oinstall  10M Mar 11 18:47 0cr07v1i_1_1_20160311
-rw-r----- 1 oracle oinstall 4.8M Mar 11 18:47 0dr07v1l_1_1_20160311
-rw-r----- 1 oracle oinstall 2.3M Mar 11 18:50 TBS_B_0gr07v6t_1_1_20160311
-rw-r----- 1 oracle oinstall 9.7M Mar 11 18:47 ctl_0er07v1m_1_1_20160311
-rw-r----- 1 oracle oinstall 9.7M Mar 11 18:51 current_ctl_0hr07vad_1_1_20160311










 
5. 아카이브 파일만 압축 백업

RMAN> backup as compressed backupset archivelog all
2> format '/home/oracle/rman/archive_%U_%T';

Starting backup at 16-MAR-16
current log archived
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=125 device type=DISK
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=625 RECID=1 STAMP=906126757
input archived log thread=1 sequence=626 RECID=2 STAMP=906126757
input archived log thread=1 sequence=627 RECID=3 STAMP=906126758
input archived log thread=1 sequence=628 RECID=4 STAMP=906139577
input archived log thread=1 sequence=629 RECID=5 STAMP=906156017
input archived log thread=1 sequence=630 RECID=6 STAMP=906156044
input archived log thread=1 sequence=631 RECID=7 STAMP=906157375
input archived log thread=1 sequence=632 RECID=8 STAMP=906174003
input archived log thread=1 sequence=633 RECID=9 STAMP=906202815
input archived log thread=1 sequence=634 RECID=10 STAMP=906225122
input archived log thread=1 sequence=635 RECID=11 STAMP=906242431
input archived log thread=1 sequence=636 RECID=12 STAMP=906243813
input archived log thread=1 sequence=637 RECID=13 STAMP=906243816
input archived log thread=1 sequence=638 RECID=14 STAMP=906243823
input archived log thread=1 sequence=639 RECID=15 STAMP=906271209
input archived log thread=1 sequence=640 RECID=16 STAMP=906271233
input archived log thread=1 sequence=641 RECID=17 STAMP=906289207
input archived log thread=1 sequence=642 RECID=18 STAMP=906314650
input archived log thread=1 sequence=643 RECID=19 STAMP=906330253
input archived log thread=1 sequence=644 RECID=20 STAMP=906330256
input archived log thread=1 sequence=645 RECID=21 STAMP=906346843
input archived log thread=1 sequence=646 RECID=22 STAMP=906357629
input archived log thread=1 sequence=647 RECID=23 STAMP=906372284
input archived log thread=1 sequence=648 RECID=24 STAMP=906400698
input archived log thread=1 sequence=649 RECID=25 STAMP=906418820
input archived log thread=1 sequence=650 RECID=26 STAMP=906448065
input archived log thread=1 sequence=651 RECID=27 STAMP=906456314
input archived log thread=1 sequence=652 RECID=28 STAMP=906456318
input archived log thread=1 sequence=653 RECID=29 STAMP=906484204
input archived log thread=1 sequence=654 RECID=30 STAMP=906501623
input archived log thread=1 sequence=655 RECID=31 STAMP=906509419
input archived log thread=1 sequence=656 RECID=32 STAMP=906538535
input archived log thread=1 sequence=657 RECID=33 STAMP=906542757
input archived log thread=1 sequence=658 RECID=34 STAMP=906542760
input archived log thread=1 sequence=659 RECID=35 STAMP=906573055
input archived log thread=1 sequence=660 RECID=36 STAMP=906588018
input archived log thread=1 sequence=661 RECID=37 STAMP=906602463
input archived log thread=1 sequence=662 RECID=38 STAMP=906629195
input archived log thread=1 sequence=663 RECID=39 STAMP=906629197
input archived log thread=1 sequence=664 RECID=40 STAMP=906634823
input archived log thread=1 sequence=665 RECID=41 STAMP=906636775
channel ORA_DISK_1: starting piece 1 at 16-MAR-16
channel ORA_DISK_1: finished piece 1 at 16-MAR-16
piece handle=/home/oracle/rman/archive_0vr0kbf8_1_1_20160316 tag=TAG20160316T113256 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55
Finished backup at 16-MAR-16




[oracle@DBTEST rman]$ ll -h archive*
-rw-r----- 1 oracle oinstall 381M Mar 16 11:33 archive_0vr0kbf8_1_1_20160316






6. 백업 옵션 ( 보존기간, 백업 안된 데이터파일만 골라서 백업) 

6-1. TBS_TEST 보존기간 90일
 

 

 RMAN> backup as compressed backupset tablespace TBS_TEST
2> format '/home/oracle/rman/untile90_%U_%T' 
3> keep until time 'sysdate+90';

Starting backup at 16-MAR-16
current log archived

using channel ORA_DISK_1
backup will be obsolete on date 14-JUN-16
archived logs required to recover from this backup will be backed up
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00025 name=/home/oracle/ts/TBS_TEST01.dbf
channel ORA_DISK_1: starting piece 1 at 16-MAR-16
channel ORA_DISK_1: finished piece 1 at 16-MAR-16
piece handle=/home/oracle/rman/untile90_10r0kbk3_1_1_20160316 tag=TAG20160316T113531 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03

using channel ORA_DISK_1
backup will be obsolete on date 14-JUN-16
archived logs required to recover from this backup will be backed up
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 16-MAR-16
channel ORA_DISK_1: finished piece 1 at 16-MAR-16
piece handle=/home/oracle/rman/untile90_11r0kbk6_1_1_20160316 tag=TAG20160316T113531 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01

current log archived
using channel ORA_DISK_1
backup will be obsolete on date 14-JUN-16
archived logs required to recover from this backup will be backed up
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=667 RECID=43 STAMP=906636937
channel ORA_DISK_1: starting piece 1 at 16-MAR-16
channel ORA_DISK_1: finished piece 1 at 16-MAR-16
piece handle=/home/oracle/rman/untile90_12r0kbk9_1_1_20160316 tag=TAG20160316T113531 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01

using channel ORA_DISK_1
backup will be obsolete on date 14-JUN-16
archived logs required to recover from this backup will be backed up
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
channel ORA_DISK_1: starting piece 1 at 16-MAR-16
channel ORA_DISK_1: finished piece 1 at 16-MAR-16
piece handle=/home/oracle/rman/untile90_13r0kbkb_1_1_20160316 tag=TAG20160316T113531 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 16-MAR-16




[oracle@DBTEST rman]$ ll -h until*
-rw-r----- 1 oracle oinstall  10M Mar 16 11:35 untile90_10r0kbk3_1_1_20160316
-rw-r----- 1 oracle oinstall  96K Mar 16 11:35 untile90_11r0kbk6_1_1_20160316
-rw-r----- 1 oracle oinstall 5.0K Mar 16 11:35 untile90_12r0kbk9_1_1_20160316
-rw-r----- 1 oracle oinstall 1.1M Mar 16 11:35 untile90_13r0kbkb_1_1_20160316



=> 백업 로그를 확인하면
데이터파일, spfile, 아카이브로그, 컨트롤 파일  을 받음.








6-2 백업 안된 부분만 백업.
TBS_TEST 테이블 스페이스에 데이터 파일(TBS_TEST02.dbf) 추가후 테이블 RMAN_NO_BACKUP 생성


alter tablespace TBS_TEST add datafile '/home/oracle/ts/TBS_TEST02.dbf' size 5M


create table rman_no_backup(
address varchar2(10),
name varchar2(10)
)tablespace TBS_TEST;

insert into rman_bb values('rman','no_backup');



commit





RMAN> backup as compressed backupset tablespace TBS_TEST
2> format '/home/oracle/rman/nobackup_%U_%T'         
3> not backed up;

Starting backup at 16-MAR-16
using channel ORA_DISK_1
skipping datafile 25; already backed up on 16-MAR-16
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00015 name=/home/oracle/ts/TBS_TEST02.dbf
channel ORA_DISK_1: starting piece 1 at 16-MAR-16
channel ORA_DISK_1: finished piece 1 at 16-MAR-16
piece handle=/home/oracle/rman/nobackup_14r0kc16_1_1_20160316 tag=TAG20160316T114230 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 16-MAR-16


추가된 데이터 파일(TBS_TEST02.dbf) 백업 되는 것을 확인. 
-> 하지만 추가된 데이타 ( 'rman', 'no_backup') 은 백업 되지 않음.




 

기준일을 주고 백업 가능. 

RMAN>  backup as compressed backupset tablespace TBS_TEST
2> format '/home/oracle/rman/since_untile_%U_%T'
3> not backed up since time ='sysdate -3';

Starting backup at 16-MAR-16
using channel ORA_DISK_1
skipping datafile 15; already backed up on 16-MAR-16
skipping datafile 25; already backed up on 16-MAR-16
Finished backup at 16-MAR-16

RMAN> 
 

 



 

 

 level 순위
0 > 1 > 2 > 3


차등 증분 백업 : 백업 받을 때 설정했던 숫자가 자기보다 작거나 같으면 그시점부터 지금까지 모든 데이터를 백업

- 이전에 백업 받았던 백업파일과 비교하여 변경된 부분만 골라서 백업을 수행함.
- 차등 증분백업 , 누적 증분 백업.
- EE 만 지원
- 10g 이후 부터 Block change tracking 기능을 지원하여 빠른 incremental backup 이 지원됨



ex) 

RMAN> run {
2> allocate channel c1 type disk;
3> backup
4> incremental level 0
5> tablespace TBS_TEST channel c1
6> format '/home/oracle/rman/L0_%%U_%T';
7> }

allocated channel: c1
channel c1: SID=125 device type=DISK

Starting backup at 16-MAR-16
channel c1: starting incremental level 0 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00025 name=/home/oracle/ts/TBS_TEST01.dbf
channel c1: starting piece 1 at 16-MAR-16
channel c1: finished piece 1 at 16-MAR-16
piece handle=/home/oracle/rman/L0_%%U_20160316 tag=TAG20160316T105217 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 16-MAR-16
released channel: c1





Level 0 으로 a 데이터 백업을 받음.
월요일까지 b 라는 데이터가 추가후. 월요일에 level 3으로 백업을 수행
-> level 3 숫자가 같거나 작은 것을 찾음 ( Level 0 : 일) 
-> 즉, 추가된 b 데이터만 백업을 받음.





확인

[oracle@DBTEST rman]$ ll -h
total 75M
-rw-r----- 1 oracle oinstall 75M Mar 16 10:52 L0_%%U_20160316







차등 증분 백업을 확인 하기 위해 TBS_TEST 테이블 스페이스에 rman_b 테이블 생성 


create table rman_b(
address varchar2(10),
name varchar2(10)
)tablespace TBS_TEST;

insert into rman_b values('KOREA','PBJ');

COMMIT;







RMAN> run {
2> allocate channel c2 type disk;
3> backup
4> incremental level 3
5> tablespace TBS_TEST channel c2
6> format '/home/oracle/rman/L3_%%U_%T';
7> }

allocated channel: c2
channel c2: SID=125 device type=DISK

Starting backup at 16-MAR-16
channel c2: starting incremental level 3 datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00025 name=/home/oracle/ts/TBS_TEST01.dbf
channel c2: starting piece 1 at 16-MAR-16
channel c2: finished piece 1 at 16-MAR-16
piece handle=/home/oracle/rman/L3_%%U_20160316 tag=TAG20160316T105732 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:01
Finished backup at 16-MAR-16
released channel: c2




[oracle@DBTEST rman]$ ll -h L3*
-rw-r----- 1 oracle oinstall 120K Mar 16 10:57 L3_%%U_20160316




create table rman_c(
address varchar2(10),
name varchar2(10)
)tablespace TBS_TEST;

insert into rman_c values('japan','lee');

COMMIT;





run {
allocate channel c2 type disk;
backup
incremental level 3
tablespace TBS_TEST channel c2
format '/home/oracle/rman/L3_1_%%U_%T';
}



allocated channel: c2
channel c2: SID=125 device type=DISK

Starting backup at 16-MAR-16
channel c2: starting incremental level 3 datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00025 name=/home/oracle/ts/TBS_TEST01.dbf
channel c2: starting piece 1 at 16-MAR-16
channel c2: finished piece 1 at 16-MAR-16
piece handle=/home/oracle/rman/L3_1_%%U_20160316 tag=TAG20160316T110032 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:01
Finished backup at 16-MAR-16
released channel: c2




[oracle@DBTEST rman]$ ll -h L3_1*
-rw-r----- 1 oracle oinstall 120K Mar 16 11:00 L3_1_%%U_20160316


파일을 열어서 /lee 문자를 찾으면 데이터가 있음을 확인
^@^@^@,^A^B^Ejapan^Clee^W^FES^K[1m^@^@~M^@@^








rman_d 생성후 
level 1 로 백업. 

백업될 예상 데이타.
1보다 작거나 같은 level 중에 변경된 것들만 백업을 받음
-> bcd 데이타 만 백업을 될것임





create table rman_d(
address varchar2(10),
name varchar2(10)
)tablespace TBS_TEST;

insert into rman_d values('japan','lee');
insert into rman_d values('china','jang');
insert into rman_d values('usa','jack');


COMMIT;





RMAN> run {
2> allocate channel c2 type disk;
3> backup
4>  incremental level 1
5> tablespace TBS_TEST channel c2
6> format '/home/oracle/rman/L1_%U_%T';
7> }

allocated channel: c2
channel c2: SID=125 device type=DISK

Starting backup at 16-MAR-16
channel c2: starting incremental level 1 datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00025 name=/home/oracle/ts/TBS_TEST01.dbf
channel c2: starting piece 1 at 16-MAR-16
channel c2: finished piece 1 at 16-MAR-16
piece handle=/home/oracle/rman/L1_0rr0k9qn_1_1_20160316 tag=TAG20160316T110455 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:01
Finished backup at 16-MAR-16
released channel: c2





[oracle@DBTEST rman]$ ll -h L1*
-rw-r----- 1 oracle oinstall 248K Mar 16 11:04 L1_0rr0k9qn_1_1_20160316







백업받은 파일 데이타 확인. 



rman_b 데이타
^B^EKOREA^CPBJ^O^F



ramn_c  데이타 
^@^@^@^@^@^@^@^@^@,^A^B^Ejapan^Clee^W^FES [1m^@^@~U%@^FoY


rman_d 데이타
[1m^FCHO,^B^B^Cusa^Djack,
^A^B^Echina^Djan^
A^B^Ejapan^Clee^_








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

level 순위
0 > 1 > 2 > 3c > 3


(Incremental backup)
누적 증분 백업 : 백업 받을 때 설정했던 숫자가 자기보다 작을경우 그 시점부터 지금까지 모든 데이터를 백업


 

ex)
create tablespace TBS_RMAN
DATAFILE '/home/oracle/ts/TBS_RAMN01.dbf' SIZE 10M



RMAN> run {
2> allocate channel c1 type disk;
3> backup 
4> incremental level 0 
5> tablespace TBS_RMAN channel c1
6> format '/home/oracle/rman/L0_I_%U_%T';   
7> }

allocated channel: c1
channel c1: SID=125 device type=DISK

Starting backup at 16-MAR-16
channel c1: starting incremental level 0 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00013 name=/home/oracle/ts/TBS_RAMN01.dbf
channel c1: starting piece 1 at 16-MAR-16
channel c1: finished piece 1 at 16-MAR-16
piece handle=/home/oracle/rman/L0_I_0sr0kao8_1_1_20160316 tag=TAG20160316T112040 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 16-MAR-16
released channel: c1



[oracle@DBTEST rman]$ ll -h L0_I*
-rw-r----- 1 oracle oinstall 1.1M Mar 16 11:20 L0_I_0sr0kao8_1_1_20160316







create table rman_aa(
address varchar2(10),
name varchar2(10)
)tablespace TBS_RMAN;

insert into rman_aa values('qw','er');



commit







RMAN> run {
2> allocate channel c1 type disk;
3> backup
4> incremental level 3
5> tablespace TBS_RMAN channel c1
6> format '/home/oracle/rman/L3_I_%U_%T';
7> }

allocated channel: c1
channel c1: SID=125 device type=DISK

Starting backup at 16-MAR-16
channel c1: starting incremental level 3 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00013 name=/home/oracle/ts/TBS_RAMN01.dbf
channel c1: starting piece 1 at 16-MAR-16
channel c1: finished piece 1 at 16-MAR-16
piece handle=/home/oracle/rman/L3_I_0tr0kasb_1_1_20160316 tag=TAG20160316T112250 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 16-MAR-16
released channel: c1





[oracle@DBTEST rman]$ ll -h L3_I*
-rw-r----- 1 oracle oinstall 120K Mar 16 11:22 L3_I_0tr0kasb_1_1_20160316













create table rman_bb(
address varchar2(10),
name varchar2(10)
)tablespace TBS_RMAN;

insert into rman_bb values('as','df');



commit








그림에서는 level 3c 로 표현하였지만, 실제로 rman 명령어 실행시 "c" 문자는 사용할수 없음.
cumulative 옵션을 추가적으로 적음.

예상 백업 데이타. 
3c 보다 작은 level 중 변경된 데이타만 백업
  -> b c 

-> qw er, as df  데이타가 있어야함. 






RMAN>  run {
2> allocate channel c1 type disk;
3>  backup
4> incremental level 3 cumulative
5>  tablespace TBS_RMAN channel c1
6> format '/home/oracle/rman/L3c_I_%U_%T';
7> 
8> }

allocated channel: c1
channel c1: SID=125 device type=DISK

Starting backup at 16-MAR-16
channel c1: starting incremental level 3 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00013 name=/home/oracle/ts/TBS_RAMN01.dbf
channel c1: starting piece 1 at 16-MAR-16
channel c1: finished piece 1 at 16-MAR-16
piece handle=/home/oracle/rman/L3c_I_0ur0kb3l_1_1_20160316 tag=TAG20160316T112645 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 16-MAR-16
released channel: c1




[oracle@DBTEST rman]$ ll -h L3c_I*
-rw-r----- 1 oracle oinstall 184K Mar 16 11:26 L3c_I_0ur0kb3l_1_1_20160316

데이타 확인.
B^B qw ^B er~
^A^B^B as ^B df~




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

---------------------------------------------------------------------------------------
* RMAN 으로 복구하기.


RMAN 복구 방법은 Restore, Recovery 개념으로 나눔.
1. 사용 안함 설정 -> offline, shutdown
2. 백업 복원 -> restore
3. 복구 -> recover
4. 사용함 -> online, open





1. Restore

1-1 
TBS_RMAN full_backup 수행 



RMAN> backup as compressed backupset tablespace TBS_RMAN
2> format '/home/oracle/rman/TBS_RMAN_FULL_%U_%T';

Starting backup at 16-MAR-16
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00013 name=/home/oracle/ts/TBS_RAMN01.dbf
channel ORA_DISK_1: starting piece 1 at 16-MAR-16
channel ORA_DISK_1: finished piece 1 at 16-MAR-16
piece handle=/home/oracle/rman/TBS_RMAN_FULL_16r0ki6r_1_1_20160316 tag=TAG20160316T132755 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 16-MAR-16






RMAN> report schema;

Report of database schema for database with db_unique_name ORCL

List of Permanent Datafiles
===========================
File Size(MB) Tablespace           RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1    1000     SYSTEM               ***     /u01/app/oracle/oradata/orcl/system01.dbf
2    1500     SYSAUX               ***     /u01/app/oracle/oradata/orcl/sysaux01.dbf
3    1000     UNDOTBS1             ***     /u01/app/oracle/oradata/orcl/undotbs01.dbf
4    365      USERS                ***     /u01/app/oracle/oradata/orcl/users01.dbf
5    100      EXAMPLE              ***     /u01/app/oracle/oradata/orcl/example01.dbf
6    100      TBS_A                ***     /u01/app/oracle/oradata/orcl/tbs_a_01.dbf
7    100      TBS_A                ***     /u01/app/oracle/oradata/orcl/tbs_a_02.dbf
8    50       TBS_B                ***     /u01/app/oracle/oradata/orcl/tbs_b_01.dbf
9    85       UNDOTBS2             ***     /u01/app/oracle/oradata/orcl/undotbs02.dbf
10   85       UNDOTBS2             ***     /u01/app/oracle/oradata/orcl/undotbs02_2.dbf
11   100      TBS_C                ***     /u01/app/oracle/oradata/orcl/tbs_c_01.dbf
12   79       TBS_D                ***     /u01/app/oracle/oradata/orcl/tbs_d_01.dbf
13   10       TBS_RMAN             ***     /home/oracle/ts/TBS_RAMN01.dbf
14   100      PBJ_TEMP             ***     /home/oracle/pbj_temp01.dbf
15   5        TBS_TEST             ***     /home/oracle/ts/TBS_TEST02.dbf
17   100      DATA01               ***     /home/oracle/ts/DATA01.dbf
21   200      TBS_SCOTT_IDX        ***     /home/oracle/scott_idx01.dbf
25   100      TBS_TEST             ***     /home/oracle/ts/TBS_TEST01.dbf
26   10       RC_TBS01             ***     /u01/app/oracle/oradata/orcl/rc_tbs.dbf

List of Temporary Files
=======================
File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1    47       TEMP                 32767       /u01/app/oracle/oradata/orcl/temp01.dbf
2    29       TEMP2                29          /u01/app/oracle/oradata/orcl/temp02.dbf
5    29       TEMP3                29          /u01/app/oracle/oradata/orcl/temp03.dbf
7    100      TEMP4                100         /u01/app/oracle/oradata/orcl/temp4.dbf
8    50       TEMP5                50          /u01/app/oracle/oradata/orcl/temp5.dbf







_--------------------------------------------------------------------
완전 복구
1. offline 가능한 data file 삭제 복구작업
2. offline 불가능 한 data file 삭제 복구작업


_---------------------------------------------------------------------















#1. offline 가능한 data file 삭제 복구작업


1-2 * 데이터파일 삭제 시 복구
TBS_RMAN 의  /home/oracle/ts/TBS_RAMN01.dbf 삭제


[oracle@DBTEST rman]$ rm -rf /home/oracle/ts/TBS_RAMN01.dbf
[oracle@DBTEST rman]$ 
[oracle@DBTEST rman]$ 
[oracle@DBTEST rman]$ ls /home/oracle/ts/TBS_RAMN01.dbf
ls: cannot access /home/oracle/ts/TBS_RAMN01.dbf: No such file or directory

 





1-3
데이터 파일 삭제된 파일 복구.



 
RMAN> sql 'alter tablespace TBS_RMAN offline immediate';         << TBS offline 변경

sql statement: alter tablespace TBS_RMAN offline immediate





RMAN> restore tablespace TBS_RMAN; << /home/oracle/rman/TBS_RMAN_FULL_16r0ki6r_1_1_20160316 
   백업파일로 부터 복구
Starting restore at 16-MAR-16
using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00013 to /home/oracle/ts/TBS_RAMN01.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/rman/TBS_RMAN_FULL_16r0ki6r_1_1_20160316
channel ORA_DISK_1: piece handle=/home/oracle/rman/TBS_RMAN_FULL_16r0ki6r_1_1_20160316 tag=TAG20160316T132755
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 16-MAR-16





RMAN> recover tablespace TBS_RMAN; << Redo, Archive 으로 부터 복구.

Starting recover at 16-MAR-16
using channel ORA_DISK_1

starting media recovery
media recovery complete, elapsed time: 00:00:00

Finished recover at 16-MAR-16






RMAN> sql 'alter tablespace TBS_RMAN online'; << online 변경

sql statement: alter tablespace TBS_RMAN online


 

  

확인. 
[oracle@DBTEST rman]$ ls /home/oracle/ts/TBS_RAMN01.dbf
/home/oracle/ts/TBS_RAMN01.dbf












#2. offline 되지 않는 데이터 파일 복구.(system)



2-1 
SYSTEM 테이블 스페이스 풀 백업

RMAN> backup as compressed backupset tablespace SYSTEM
2> FORMAT '/home/oracle/rman/SYSTEM_FULL_%U_%T';

tarting backup at 25-MAR-16
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=20 device type=DISK
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/orcl/system01.dbf
channel ORA_DISK_1: starting piece 1 at 25-MAR-16
channel ORA_DISK_1: finished piece 1 at 25-MAR-16
piece handle=/home/oracle/rman/SYSTEM_FULL_01r1cohu_1_1_20160325 tag=TAG20160325T174326 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 25-MAR-16
channel ORA_DISK_1: finished piece 1 at 25-MAR-16
piece handle=/home/oracle/rman/SYSTEM_FULL_02r1coin_1_1_20160325 tag=TAG20160325T174326 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 25-MAR-16




[oracle@DBTEST rman]$ ll -h ./*
-rw-r----- 1 oracle oinstall 190M Mar 25 17:43 ./SYSTEM_FULL_01r1cohu_1_1_20160325
-rw-r----- 1 oracle oinstall 1.1M Mar 25 17:43 ./SYSTEM_FULL_02r1coin_1_1_20160325






2-2
system 데이터 파일 삭제

[oracle@DBTEST rman]$ rm -rf  /u01/app/oracle/oradata/orcl/system01.dbf
[oracle@DBTEST rman]$ ls  /u01/app/oracle/oradata/orcl/system01.dbf
ls: cannot access /u01/app/oracle/oradata/orcl/system01.dbf: No such file or directory




2-3    
복구


2-3-1)
offline 변경 (system offline 되지 않음 )
RMAN> sql 'alter tablespace SYSTEM offline immediate';

sql statement: alter tablespace SYSTEM offline immediate
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of sql command on default channel at 03/16/2016 13:42:15
RMAN-11003: failure during parse/execution of SQL statement: alter tablespace SYSTEM offline immediate
ORA-01541: system tablespace cannot be brought offline; shut down if necessary



2-3-2)
 db shutdown

RMAN> shutdown immediate;

database closed
database dismounted
Oracle instance shut down


RMAN> startup

connected to target database (not started)
Oracle instance started
database mounted
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of startup command at 03/16/2016 13:44:03
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl/system01.dbf'


-> system01.dbf 파일이 없다는 메시지를 뿌림





2-3-3) 파일 복원


RMAN> restore tablespace system;           << 백업 파일로 부터 복원


Starting restore at 16-MAR-16
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=134 device type=DISK

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/orcl/system01.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/rman/SYSTEM_FULL_17r0kioj_1_1_20160316
channel ORA_DISK_1: piece handle=/home/oracle/rman/SYSTEM_FULL_17r0kioj_1_1_20160316 tag=TAG20160316T133723
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:35
Finished restore at 16-MAR-16







RMAN> recover database;

Starting recover at 16-MAR-16
using channel ORA_DISK_1

starting media recovery
unable to find archived log
archived log thread=1 sequence=118


아카이브 파일 시퀀스 118 번을 찾음. => 즉 완전 복구를 하려고 하였음. 
=> 그러나 내가 현재 가지고 있는 아카이브 파일에 118번의 시퀀스가 존재 하지 않음.


결국 불안전 복구로 복구 시도.







시퀀스 확인 및 아카이브 파일 확인




리두 확인.
SYS@ORCL AS SYSDBA> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER                                        IS_
---------- ------- ------- --------------------------------------------- ---
         3         ONLINE  /u01/app/oracle/oradata/orcl/redo03.log       NO
         2         ONLINE  /u01/app/oracle/oradata/orcl/redo02.log       NO
         1         ONLINE  /u01/app/oracle/oradata/orcl/redo01.log       NO




select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC
---------- ---------- ---------- ---------- ---------- ---------- ---
STATUS           FIRST_CHANGE# FIRST_TIME   NEXT_CHANGE# NEXT_TIME
---------------- ------------- ------------ ------------ ------------
         1          1         687  852428800        512          1 NO
CURRENT             1.4696E+13 23-MAR-16      2.8147E+14

         3          1         685   52428800        512          1 YES
INACTIVE            1.4696E+13 23-MAR-16      1.4696E+13 23-MAR-16

         2          1         686   52428800        512          1 YES
INACTIVE            1.4696E+13 23-MAR-16      1.4696E+13 23-MAR-16





-rw-r----- 1 oracle oinstall 33506304 Mar 10 11:29 name_1_623_899810832.arc
-rw-r----- 1 oracle oinstall 31349248 Mar 10 12:07 name_1_624_899810832.arc
-rw-r----- 1 oracle oinstall  7918592 Mar 10 13:52 name_1_625_899810832.arc
-rw-r----- 1 oracle oinstall  2373120 Mar 10 13:52 name_1_626_899810832.arc
-rw-r----- 1 oracle oinstall  7336448 Mar 10 13:52 name_1_627_899810832.arc
-rw-r----- 1 oracle oinstall 37759488 Mar 10 17:26 name_1_628_899810832.arc
-rw-r----- 1 oracle oinstall 33926144 Mar 10 22:00 name_1_629_899810832.arc
-rw-r----- 1 oracle oinstall 32673280 Mar 10 22:00 name_1_630_899810832.arc
-rw-r----- 1 oracle oinstall 42726912 Mar 10 22:22 name_1_631_899810832.arc
-rw-r----- 1 oracle oinstall 32456704 Mar 11 03:00 name_1_632_899810832.arc
-rw-r----- 1 oracle oinstall 32650240 Mar 11 11:00 name_1_633_899810832.arc
-rw-r----- 1 oracle oinstall 24230400 Mar 11 17:12 name_1_634_899810832.arc
-rw-r----- 1 oracle oinstall 39557632 Mar 11 22:00 name_1_635_899810832.arc
-rw-r----- 1 oracle oinstall 42726912 Mar 11 22:23 name_1_636_899810832.arc
-rw-r----- 1 oracle oinstall 42726912 Mar 11 22:23 name_1_637_899810832.arc
-rw-r----- 1 oracle oinstall 40793088 Mar 11 22:23 name_1_638_899810832.arc
-rw-r----- 1 oracle oinstall 32302080 Mar 12 06:00 name_1_639_899810832.arc
-rw-r----- 1 oracle oinstall 34037248 Mar 12 06:00 name_1_640_899810832.arc
-rw-r----- 1 oracle oinstall 31790592 Mar 12 11:00 name_1_641_899810832.arc
-rw-r----- 1 oracle oinstall 33370112 Mar 12 18:04 name_1_642_899810832.arc
-rw-r----- 1 oracle oinstall 46926848 Mar 12 22:24 name_1_643_899810832.arc
-rw-r----- 1 oracle oinstall 42726912 Mar 12 22:24 name_1_644_899810832.arc
-rw-r----- 1 oracle oinstall 31404032 Mar 13 03:00 name_1_645_899810832.arc
-rw-r----- 1 oracle oinstall 37428224 Mar 13 06:00 name_1_646_899810832.arc
-rw-r----- 1 oracle oinstall 34205184 Mar 13 10:04 name_1_647_899810832.arc
-rw-r----- 1 oracle oinstall 31346176 Mar 13 17:58 name_1_648_899810832.arc
-rw-r----- 1 oracle oinstall 32278528 Mar 13 23:00 name_1_649_899810832.arc
-rw-r----- 1 oracle oinstall 31273472 Mar 14 07:07 name_1_650_899810832.arc
-rw-r----- 1 oracle oinstall 42726912 Mar 14 09:25 name_1_651_899810832.arc
-rw-r----- 1 oracle oinstall 39187456 Mar 14 09:25 name_1_652_899810832.arc
-rw-r----- 1 oracle oinstall 31321600 Mar 14 17:10 name_1_653_899810832.arc
-rw-r----- 1 oracle oinstall 38744576 Mar 14 22:00 name_1_654_899810832.arc
-rw-r----- 1 oracle oinstall 31290880 Mar 15 00:10 name_1_655_899810832.arc
-rw-r----- 1 oracle oinstall 31273472 Mar 15 08:15 name_1_656_899810832.arc
-rw-r----- 1 oracle oinstall 42726912 Mar 15 09:25 name_1_657_899810832.arc
-rw-r----- 1 oracle oinstall 39009792 Mar 15 09:26 name_1_658_899810832.arc
-rw-r----- 1 oracle oinstall 31336448 Mar 15 17:50 name_1_659_899810832.arc
-rw-r----- 1 oracle oinstall 35935232 Mar 15 22:00 name_1_660_899810832.arc
-rw-r----- 1 oracle oinstall 33219584 Mar 16 02:01 name_1_661_899810832.arc
-rw-r----- 1 oracle oinstall 33576448 Mar 16 09:26 name_1_662_899810832.arc
-rw-r----- 1 oracle oinstall 42726912 Mar 16 09:26 name_1_663_899810832.arc
-rw-r----- 1 oracle oinstall 31929856 Mar 16 11:00 name_1_664_899810832.arc
-rw-r----- 1 oracle oinstall  1460736 Mar 16 11:32 name_1_665_899810832.arc
-rw-r----- 1 oracle oinstall    14848 Mar 16 11:35 name_1_666_899810832.arc
-rw-r----- 1 oracle oinstall     3584 Mar 16 11:35 name_1_667_899810832.arc
-rw-r----- 1 oracle oinstall 36434432 Mar 18 14:15 name_1_668_899810832.arc
-rw-r----- 1 oracle oinstall 42726912 Mar 18 14:15 name_1_669_899810832.arc
-rw-r----- 1 oracle oinstall 42734592 Mar 18 14:15 name_1_670_899810832.arc
-rw-r----- 1 oracle oinstall 37366272 Mar 18 22:00 name_1_671_899810832.arc
-rw-r----- 1 oracle oinstall 32317952 Mar 18 22:00 name_1_672_899810832.arc
-rw-r----- 1 oracle oinstall 31903232 Mar 18 22:02 name_1_673_899810832.arc
-rw-r----- 1 oracle oinstall 31272448 Mar 19 02:50 name_1_674_899810832.arc
-rw-r----- 1 oracle oinstall 32606720 Mar 19 08:00 name_1_675_899810832.arc
-rw-r----- 1 oracle oinstall 42726912 Mar 19 09:15 name_1_676_899810832.arc
-rw-r----- 1 oracle oinstall 36103168 Mar 19 10:05 name_1_677_899810832.arc
-rw-r----- 1 oracle oinstall 33669632 Mar 19 14:05 name_1_678_899810832.arc
-rw-r----- 1 oracle oinstall 31636480 Mar 19 22:00 name_1_679_899810832.arc
-rw-r----- 1 oracle oinstall 31272960 Mar 20 05:57 name_1_680_899810832.arc
-rw-r----- 1 oracle oinstall 32444928 Mar 20 09:00 name_1_681_899810832.arc
-rw-r----- 1 oracle oinstall 42726912 Mar 20 09:16 name_1_682_899810832.arc
-rw-r----- 1 oracle oinstall 42443264 Mar 20 10:06 name_1_683_899810832.arc
-rw-r----- 1 oracle oinstall 31272448 Mar 20 14:33 name_1_684_899810832.arc
-rw-r----- 1 oracle oinstall 31911424 Mar 20 22:00 name_1_685_899810832.arc
-rw-r----- 1 oracle oinstall 32846848 Mar 21 12:48 name_1_686_899810832.arc
-rw-r----- 1 oracle oinstall 42726912 Mar 21 12:48 name_1_687_899810832.arc


* 백업 받아놓은 컨트롤파일(trace 파일) 복구.
@/u01/app/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_13819.trc

recover database using backup controlfile; 
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel  


cancel 입력하여 복구 취소. (118 시퀀스가 없으므로 current 리두파일, 아카이브파일 없음.)



scn 리셋 시켜서 데이터베이스 오픈. (불안전복구)
alter database open resetlogs 
Database altered.

SYS@ORCL AS SYSDBA> 
SYS@ORCL AS SYSDBA> 
SYS@ORCL AS SYSDBA> 
SYS@ORCL AS SYSDBA> select status from v$instance;

STATUS
------------
OPEN


반응형

'Oracle > backup' 카테고리의 다른 글

RMAN 완전복구/불완전복구  (0) 2022.01.26
아카이브 모드에서 완전복구/불완전복구  (0) 2022.01.26
Cold Backup && Hot Backup  (0) 2022.01.26
BCT(Block change tracking)  (0) 2022.01.26