RMAN 의특징및기능에대한내부기술자료 발표일 : 2004 년 9 월 3 일 작성자 : LG 카드중형서버운영파트민연홍 작성일 : 2004 년 9 월 3 일 업데이트 : 2006 년 2 월 23 일 목 차 1. rman 의특징... 2 2. rman catalog... 2 3. 컨트롤파일을사용한 rman repository... 2 4. CHANNEL 할당... 2 5. 수동으로디스크 IO 채널할당하기... 3 6. 자동으로채널할당하는설정을해주자... 3 7. rman에서 datafile의정보를얻기... 4 8. show 명령... 5 9. list 명령... 6 10. report 명령... 6 11. 백업... 7 12. backup 상황을알수있는동적view... 7 13. fuz 컬럼은백업모드인지보여줌... 8 14. rman 백업설명... 9 15.backup set 아래와같이백업셋을지정해줄수있다... 9 16. backup piece... 10 17. rman backup option... 11 18. 채널을분산시켜서빠른백업이가능하게한다... 13 19. archive log file까지백업가능하다.... 13 20. copy 명령을통한백업 ( backup 명령이아닌이러한명령도가능하다 )... 14 21. 병렬식이미지백업 (copy)... 14 22 incremental backup... 15 23. rman을이용해서 tablespace 복구하는방법... 17 24. 새로운이름을데이터파일을 RESTORE 하고 RECOVER 하기... 17 25. RMAN을통해서불완전복구하기... 18 26. cross check 해서 sync를맞추기... 19 27. delete 명령... 20 28. catalog DB 에서 (RMANDB DB) RMAN catalog를생성하고, catalog 를이용해서접속한후 database를등록하기... 20
1. rman 의특징 rman 은 database, tablespace, datafile, 컨트롤파일, archive log 를백업가능백업복구의자동으로수행 incremental 블록백업수행 unused block 를넘어감 backup 의제한을걸어놓고사용가능 ( 예를들어초당 3 메가씩등등 ) 2. rman catalog 만약에백업된것이날라간다면? control file 이날라가면 rman 작업도날라간다. 그러므로백업된것까지 catalog 를다른원격지컴에만들어야한다. ( 원격지의 repository 에 recovery catalog 를만들어야..) $ rman target sys/oracle@mydb catalog raser/raser@catalog -> mydb 라는호스트데이터베이스에백업을하면서카탈로그로 catalog 호스트에백업을하는것으로접속하기 3. 컨트롤파일을사용한 rman repository rman repository 는 target database와복구에대한메타데이터이다. rman repository 는항상 target database의컨트롤파일에저장된다. CONTROL_FILLE_RECORD_KEEP_TIME 은 DEFAULT 값이 7 일이다. 즉 7 일이후엔백업한내역이사라지게된다. 지정할경우그날짜가지나면백업내역이지워진다. 4. CHANNEL 할당 disk 의 io 가일어나면 channel 을할당해줘야한다.
5. 수동으로디스크 IO 채널할당하기 6. 자동으로채널할당하는설정을해주자 - configure defautl device type to sbt; 에서 sbt 는 tape 장치를의미한다. 즉기본적인 default 백업장치를지정해주는것이다. - configure device type disk parallelism 3; 에서디바이스로디스크를쓸경우병렬식으로 3 개의채널을할당해서쓰겠다는설정명령이다. - configure channel device type disk format = '/backup/rman/%u'; 에서디스크에채널을할당하면서포멧을지정하겠다는설정명령이다. - configure channel device type disk maxpiecessize 2G; 디스크에채널을할당시 piece 를지정하는데
하나의백업본당 2G 의크기를준다는설정명령이다. 즉 2G 가넘어가면 2G 씩백업된다. 백업그룹과 piece 의관계는.. 뒤에서알아보자 7. rman 에서 datafile 의정보를얻기 rman> report schema; - configure channel device type disk format '/db01/backup/%u'; 포멧을지정해준다. 자동채널할당참고 %d : db name, %s : backup set, %p : backup piece, %c : backup copy - configure retention policy to recovery window of 7 days; 복구를위한백업을유지해주는기간설정 - configure retention policy to redundancy 2; default 는 1이다. - configure retention policy clear ; retention policy 정보를 clear
- configure datafile backup copies form device type disk to 2; 백업의복사본을 2 개로만들겠다는설정명령. Format 에서 %c 가있어야중복되지않으므로에러가발생하지않는다. - configure backup optimization on ; backup 시 optimize 시킴 - configure retention policy clear; retention policy 를 clear (backup 유지기간설정을 clear) - configure channel device type sbt clear ; configure 8. show 명령 : show all 명령을하면모두보인다. 아래는특정한것만볼경우사용
9. list 명령 - list backup of database; 데이터베이스백업정보를출력한다. - list backup of datafile ~ : 데이터파일백업정보를출력한다. - List copy of tablespace system : system tablespace 가 copy 명령으로백업되었는지확인한다. 10. report 명령 - report need backup incremental 3 ; incremental level 3 일경우백업이필요한지 report 참고 > backup database incremental level 0 이면전체백업 incremental level 1 이면 level 0 으로백업후변경된데이터만을백업 incremental level 2 이면 level 1 으로백업후변경된데이터만을백업하거나 level 0 으로백업되어있다면 0 으로백업한이후의데이터를백업 - report need backup days 3 ; 3 일이지났을경우백업이필요한것을 report ; 만약 retention policy 에의해서 backup 한것이기간이지났을경우, 여기에 report 됨.
11. 백업 - online redolog file 은 rman 백업의대상이아니다. rman 에서는 redolog file 은백업대상이아니며 그룹이삭제되었을경우에는복구를수행해야한다. - 백업은 datafile, tablespace, database 전체백업이있다. 컨트롤파일의경우엔따로 backup 시에 include current controlfile 옵션을주어야한다. 12. backup 상황을알수있는동적 view
13. fuz 컬럼은백업모드인지보여줌 - alter tablespace end backup dmf 명령을하면 fuz 컬럼이변경
14. rman 백업설명 - recovery manager 를통해서 1) datafile, controlfile, archive logfile 의 image copy 2) backup set 을통한 datafile 의 backup 이가능하다. ( unused block 은무시해버린다.) 15.backup set 아래와같이백업셋을지정해줄수있다. 백업셋은한번백업하여생성된집합을말한다. 예를들어 1>RMAN> backup tablespace users, tools ; 2>RMAN> backup database ; 명령을했을경우 1>RMAN 명령으로 backup set 이하나가생성되고, 2>RMAN 명령으로다른하나의 backup set 이생성된다.
16. backup piece Backup piece 는 backupset 을특정크기로파일을나눈다. 단이파일은데이터파일과는상관이없으며, 데이터파일과는상관없이 RMAN 에서독립적으로나누는백업파일이다. Backup piece 의크기를조절해서백업디바이스에나누어서들어갈수있도록설정할수있다. fileperset 에서하나의백업셋당테이터파일이얼만큼들어갈수있는지지정할수있다.
17. rman backup option
- backup piece size 를정해서나누어주는역할을해준다.
18. 채널을분산시켜서빠른백업이가능하게한다. 19. archive log file 까지백업가능하다.
20. copy 명령을통한백업 ( backup 명령이아닌이러한명령도가능하다 ) 21. 병렬식이미지백업 (copy)
22 incremental backup - incremental backup을하면기존의백업에서추가된데이터만백업을받을수있다. Incremental level 은 0부터 4까지이다. Level 0은전체 database backup을의미하며숫자가높아질수록백업데이터량이적어진다. ( 순위가낮아짐 ) - 실행하고자하는 backup level보다, 이전에실시했던 backup level이작으면그이후의데이터에대해서만백업을한다. 만약이전에실시했던 backup level이크면무시하고더이전의백업을찾아서자신의 backup level보다작은것을찾아서찾게되면그이후의데이터에대해서만백업을진행한다. 만약 level 0 (=full backup) 이없다면자신의 level이 0이아닐지라도 level 0 처럼 full backup을받는다. 실행하고자하는 backup level 이이전의 backup level과같을경우, 이전의 backup을찾는
것이아니라, 같은 backup level 의백업이후늘어난데이터에대해서만백업을한다. - 위그림에서일요일에는 level 0 으로 backup을받았으며월요일에는 level 2 으로 backup을하므로 lelel 0 이후의백업을받게된다. 화요일에는 level 2 으로 backup을하였으며 level이같은경우엔같은 lelve l으로백업한이후의늘어난데이터를추가로다운로드받게된다. 수요일에는 level1으로 backup을하였으며 level1 은 level2보다크고, level0 보다작으므로 level0이후늘어난데이터에대해서백업을받는다. 목요일은 level2로 backup을하였으며, 수요일에 level 0으로백업을받았으므로수요일 level0 이후의데이터에대해서백업을한다. 예 >. Full Backup with catalog 1) incremental Base Backup 을위한 stored script 를작성한다. (inc0back) RMAN> create script inc0back { backup incremental level 0 database; } 2) inc0back 를실행한다. RMAN> run { execute script inc0back; } 3) DB 에변경작업을한다. sql> conn hr/hr sql> update employees set salary=salary*1.1; sql> commit; 4) Level 1 incremental backup script 를작성한다.(inc1back) RMAN> create script inc1back { backup incremental level 1 database; } 5) inc1back 을실행한다. RMAN> run { execute script inc0back; } ## rman 을이용한완전복구
23. rman 을이용해서 tablespace 복구하는방법 24. 새로운이름을데이터파일을 RESTORE 하고 RECOVER 하기 디스크 FAILURE 로인해서다른위치에데이터파일을위치시켰을경우
25. RMAN 을통해서불완전복구하기 1) until time 시간단위복구 2) sequence number 까지복구하기
26. cross check 해서 sync 를맞추기 ( 실재로예전에백업했던것이존재하는가? 없지는않는가?) 예 > RMAN> crosscheck backupset; allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=9 devtype=disk crosschecked backup piece: found to be 'EXPIRED' backup piece handle=/data/dbms/oradata/sbackupmin/02g16m6o_1_1 recid=1 stamp=538138840 crosschecked backup piece: found to be 'EXPIRED' backup piece handle=/data/dbms/oradata/sbackupmin/03g16uos_1_1 recid=1 stamp=538147612 Crosschecked 2 objects expire되었다. 즉실재로데이터가없다. RMAN> delete expired backupset; using channel ORA_DISK_1 List of Backup Pieces BP Key BS Key Pc# Cp# Status Device Type Piece Name ------- ------- --- --- ----------- ----------- ---------- 13 12 1 1 EXPIRED DISK /data/dbms/oradata/sbackupmin/02g16m6o_1_1
79 78 1 1 EXPIRED DISK /data/dbms/oradata/sbackupmin/03g16uos_1_1 Do you really want to delete the above objects (enter YES or NO)? y deleted backup piece backup piece handle=/data/dbms/oradata/sbackupmin/02g16m6o_1_1 recid=1 stamp=538138840 deleted backup piece backup piece handle=/data/dbms/oradata/sbackupmin/03g16uos_1_1 recid=1 stamp=538147612 Deleted 2 EXPIRED objects RMAN> 27. delete 명령 ( 백업된것을지우거나, 정책에쓸모없는것을지우기 ) 28. catalog DB 에서 (RMANDB DB) RMAN catalog 를생성하고, catalog 를이용해서접속한후 database 를등록하기 ( 아래에서 MIN db가 target DB, RMANDB DB가 catalog DB) MIN DB $ rman target system/oracel 명령을통해서 rman에접속해서사용할경우, backup data는백업할대상의컨트롤파일에저장된다. 만약컨트롤파일이날라갔을경우엔 backup 된정보가하나도없으므로복구가불가능해진다. 그래서 backup 에대해서외부다른 DB(RMANDB DB) 에 catalog를생성하고 MIN DB $ rman target system/oracle catalog urman/urman@rmandb 으로 catalog를통해서 rman에접속한후 backup을하게되면외부의다른 DB (RMANDB DB) 에 MIN db의백업된정보가저장이된다. 즉 MIN DB의컨트롤파일이깨질지라도 CATALOG db에는백업된정보가있으므로복구가가능해진다. 예 > (RMANDB DB) SQL> create tablespace rcat datafile '/opt/oracle/oradata/rmandb/disk6/rcat.dbf' size 50M;
SQL> create user urman identified by urman default tablespace rcat temporary tablespace temp; SQL> grant connect, resource, recovery_catalog_owner to rman; RMANDB@~~$ rman catalog rman/rman@rmandb RMAN> create catalog tablespace rcat; RMAN> exit (MIN DB) MIN@~ $ rman target \'sys/change_on_install as sysdba\' catalog rman/rman@rmandb RMAN> register database;