9i 에서의 RMAN 사용법예제 Author : 여현승 Creation Date : 2009-04-15 Last Updated : <YYYY-MM-DD> Latest Version : 1.0 Updated by Updated date Version <Name> < YYYY-MM-DD> <Version Number> <Name> <YYYY-MM-DD> <Version Number> <Name> <YYYY-MM-DD> <Version Number>
Contents 1. RMAN을사용한 backup (Oracle 9i)... - 3-1-1. Configuration and Backup... - 3-1-2. RMAN시작하기... - 4-1-2-1. 용어설명... - 4-1-3. RMAN환경설정하기... - 5-1-4. Database Backup... - 7-1-4-1. Incremental backup... - 7-1-4-2. Restarting backup... - 7-1-4-3. Testing backup... - 7-1-5. archive log backup & progress monitoring... - 8-1-6. 개별적인 datafile & tablespace 백업... - 10-1-7. Incremental backup & progress monitoring... - 11-1-8. archive log file backup... - 12-1-9-1. configured retention policy에기초한백업이필요한파일... - 13-1-9-2. 더이상필요하지않은백업과필요하지않은백업삭제... - 13-1-9-3. 백업파일에 corruption이나 database file이정확한위치에있는지검증... - 14-1-9-4. nologing option으로배치작업을했을때복구할수없는파일찾기... - 14-1-9-5. repository에저장된정보와물리적정보가일치하는지확인... - 15-1-9-6. database, datafile, tablespace, controlfile backup 정보보기... - 15-2. RMAN을사용한 Recovery (Oracle 9i)... - 17-2-1. 완전복구 (Complete Recovery)... - 17-2-1-1. Recovering Datafiles... - 17-2-1-2. recovering the database... - 19-2-1-3. recovering tablespaces... - 21-2-2-1. Incomplete Recovery of the Database... - 24-3. RMAN Advanced Features... - 31-3-1. Duplicate Database... - 31 - 대상정보기술오라클지원팀 - 2 -
Oracle9i Recovery Manager를이용하여 backup 과 restore, recover방법을알수있 Purpose 다. Create a Recovery Manager Backup Configuration Objectives Use Recovery Manager to Recover a database, tablespace, and datafile Use Recovery Manager Advanced Features Documentation: Oracle9i Recovery Manager User's Guide 참고자료 http://download.oracle.com/docs/cd/b10501_01/server.920/a96566/title.htm#436522 http://www.oracle.com/technology/obe/obe9ir2/obe-ha/rman/rman.htm Sample schema가있어야함. Database가 Archive log mode로설정되어있어야함선행작업다음의링크에서 rman.zip파일을다운로드해서 /oracle/wkdir 에압축을해제한다. http://www.oracle.com/technology/obe/obe9ir2/obeha/rman/files/rman.zip 1. RMAN을사용한 backup (Oracle 9i) 1-1. Configuration and Backup 먼저 backup configuration을생성한다. Backup configuration은 backup을할때생성되는파일을어디에저장할것인지를결정한다. 1. 3개의 command창을열어서하나는 SQL*Plus로접속한다. 2. Database에접속하여 OPEN상태인지확인하고 Archive log mode인지확인한다. 대상정보기술오라클지원팀 - 3 -
1-2. RMAN시작하기 RMAN은 client로써실행가능하다. 먼저 target DB에접속하고 server session을이용하여 target DB를 backup, restore, recover를수행한다. 접속방법은 catalog mode와 nocatalog mode가있다. Command line에서 rman TARGET SYS/target_pwd@target_str #connects in NOCATALOG mode rman TARGET / CATALOG rman/rman@rcat rman TARGET / CATALOG rman/rman@rcat AUXILIARY sys/aux_pwd@aux_str 접속정보를생략하고 rman 명령으로만 RMAN에접속할수있다. RMAN에접속하게되면 RMAN> 이라는프롬프트가뜨게되는데여기서 CONNECT라는명령으로 target DB및 catalog DB에접속할수있다. 1-2-1. 용어설명 Target database Recovery catalog database Auxiliary database RMAN을이용해 Backup 과 restore를할대상 database. RMAN은 target database를 SYSDBA권한으로접속한다. 만약 SYSDBA권한이없다면접속할수없다. Password file이나 OS인증을이용하여 SYSDBA권한으로접속한다. Recovery catalog database는선택사항이다. default로는 NOCATALOG option으로설정되어있다. RMAN은 control file을 metadata repository 처럼사용한다. Recovery catalog는 RMAN metadata를포함하는 table의집합이다. Auxiliary instance는 DUPLICATE명령을사용하여생긴복제DB나 standby DB에사용된다. 그리고 tablespace point-in-time recovery에사용된다. 대상정보기술오라클지원팀 - 4 -
1-3. RMAN환경설정하기 RMAN환경설정을한번해두면다음에실행할모든명령에대해서적용된다. SHOW ALL명령을이용해현재설정되어있는환경을볼수있다. 여러가지의설정가능한 parameter들을볼수있다. 그중에고려해야할몇가지의요소가있다. 나열하자면 각 datafile에필요한 backup의개수 병렬적으로 backup/restore를수행할 server process의개수 Backup이저장될디렉토리다음처럼 CLEARE option을사용하여 default값을되돌릴수있다. CONFIGURE CHANNEL DEVICE TYPE sbt CLEAR; CONFIGURE RETENTION POLICY CLEAR; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK CLEAR; 다음과같이 parameter를구성해본다. 각 datafile마다 3개의 backup /oracle/ora9testbackup에 backup저장 2개의 server process를이용해병렬로 backup/restore수행 controlfile autobackup사용 backup optimization사용만약 /oracle/ora9testbackup 디렉토리가존재하지않는다면생성한다. RMAN에접속하여다음의명령을수행한다. CONFIGURE DEFAULT DEVICE TYPE TO DISK; CONFIGURE RETENTION POLICY TO REDUNDANCY 3; CONFIGURE DEVICE TYPE DISK PARALLELISM 2; CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/oracle/ora9testbackup/ora_df%t_s%s_s%p'; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oracle/ora9testbackup/ora_cf%f'; CONFIGURE BACKUP OPTIMIZATION ON; 대상정보기술오라클지원팀 - 5 -
SHOW ALL 명령으로설정한값을확인 대상정보기술오라클지원팀 - 6 -
1-4. Database Backup BACKUP명령을이용하여환경설정으로설정했던 channel을이용하여 backup한다. 예를들어다음의명령은모든 archive log file을포함한 database를 backup하는명령이다. BACKUP DATABASE PLUS ARCHIVELOG; RMAN은 backup set의형태로 backup을저장한다. Backup set이란하나이상의 backup piece(data를포함하는물리적파일 ) 를포함하는논리적인구조이다. Backup set은보통오직하나의 backup piece를가지고있다. RMAN만이 backup set을생성할수있다. 또한개별적인 tablespace, datafile, backup set을백업할수있다. 1-4-1. Incremental backup Incremental backup을위해서는먼저 level 0 backup(database의 whole backup본 ) 이필요하다. BACKUP INCREMENTAL LEVEL 0 DATABASE; 나중에백업을할때는더높은 level로백업을한다. 누적증분백업에서는 level n과 level n-1사이에변경된 block만을백업한다. 1-4-2. Restarting backup 어떤이유에서든지 backup을하다가실패하였을때 NOT BACKED UP SINCE옵션을사용하여실패한백업을계속할수있다. 다음의예제는하루전에백업을할때백업이되지않은파일을다시백업하는것을보여준다. BACKUP DATABASE NOT BACKED UP SINCE TIME 'SYSDATE-1'; 1-4-3. Testing backup Datafile의백업이물리적으로또는논리적으로 corruption이없는지또는정상적인경로에위치하는지확인할수있다. BACKUP VALIDATE DATABASE ARCHIVELOG ALL; 대상정보기술오라클지원팀 - 7 -
1-5. archive log backup & progress monitoring Archive log 를백업하기위해 5 번의 logfile switch 를수행한다. Database와 archive file을 backup하는동안 V$SESSION_LONGOPS 뷰를조회해서 monitoring이 가능하다. BACKUP DATABASE PLUS ARCHIVELOG; 현재디렉토리를 /oracle/wkdir로변경하고백업이진행되는동안 SQL*Plus에서다음을실행한다. SQL> @monitojob SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK, ROUND(SOFAR/TOTALWORK*100,2) "% COMPLETE" FROM V$SESSION_LONGOPS WHERE OPNAME LIKE 'RMAN%' AND OPNAME NOT LIKE '%aggregate%' AND TOTALWORK!= 0 AND SOFAR <> TOTALWORK; 대상정보기술오라클지원팀 - 8 -
각컬럼의의미 SOFAR TOTALWORK %COMPLETE 읽혀진블록의개수또는 RMAN 프로세스에의해서 buffer 로올려진블록 읽을블록의총개수또는 buffer 에올려질블록의총개수 SOFAR/TOTALWORK * 100 의퍼센트 대상정보기술오라클지원팀 - 9 -
1-6. 개별적인 datafile & tablespace 백업 개별적인 datafile & tablespace 백업을위해 RMAN 에서 schema 를 report 한다. RMAN 은 database, datafile, tablespace level 로백업을할수있다. 먼저 5 번 datafile 을백업한다. 다음으로 USERS tablespace 를백업한다. 대상정보기술오라클지원팀 - 10 -
1-7. Incremental backup & progress monitoring Level 0 backup 수행 Level 0 backup monitoring Incremental backup 은 database level 뿐만아니라 datafile, tablespace level 에서도가능하다. Datafile 5 번을 level 1 backup 해본다. 대상정보기술오라클지원팀 - 11 -
1-8. archive log file backup RMAN에서는 database와 archive log file을동시에또는다른시간에백업할수있다. Archive log file을백업하기위해서우선모든 redo log file이 archive log file에적용될수있도록강제 switch 한다. Switch 가끝나면백업한다. 대상정보기술오라클지원팀 - 12 -
1-9. 백업관리명령어다음의명령어들은 RMAN에서백업이필요한파일인지, 더이상보관할필요가없는파일인지, 어떤파일이백업되었는지를보는명령이다. 1-9-1. configured retention policy에기초한백업이필요한파일 RMAN> REPORT NEED BACKUP; 1-9-2. 더이상필요하지않은백업과필요하지않은백업삭제 RMAN> REPORT OBSOLETE; RMAN> DELETE OBSOLETE; 대상정보기술오라클지원팀 - 13 -
1-9-3. 백업파일에 corruption 이나 database file 이정확한위치에있는지검증 RMAN> BACKUP VALIDATE DATABASE ARCHIVELOG ALL; 1-9-4. nologing option 으로배치작업을했을때복구할수없는파일찾기 RMAN> REPORT UNRECOVERABLE; 대상정보기술오라클지원팀 - 14 -
1-9-5. repository 에저장된정보와물리적정보가일치하는지확인 RMAN> CROSSCHECK BACKUP OF DATABASE; 1-9-6. database, datafile, tablespace, controlfile backup 정보보기 RMAN> LIST BACKUP OF DATAFILE 4; 대상정보기술오라클지원팀 - 15 -
RMAN> LIST BACKUP OF CONTROLFILE; 대상정보기술오라클지원팀 - 16 -
2. RMAN 을사용한 Recovery (Oracle 9i) 2-1. 완전복구 (Complete Recovery) 완전복구를수행하게되면가장최근의 SCN으로되돌릴수있다. 전체데이터베이스또는개별적인테이블스페이스, 데이터파일을복구할수있다. 왜냐하면완전복구이후에는 RESETLOGS옵션으로 DB를 open할필요가없기때문이다. 2-1-1. Recovering Datafiles 복구가필요한 datafile을 offline하고복원하고복구하고다시 online상태로만든다. 1. SCOTT유저로접속하여 EMP table이있는지확인한다. 2. users01.dbf를삭제한다. sys user로 dba_data_files 뷰를쿼리하여 USERS tablespace의 datafile정보를얻는다. rm /oradata/ora9test/users01.dbf 로삭제 3. SQL*Plus로돌아가서 scott user의 emp테이블을조회해보아장애를확인한다. 4. RMAN 을이용하여 users01.dbf 파일을복구한다. 대상정보기술오라클지원팀 - 17 -
먼저데이터베이스를 mount 상태로변경 RMAN 에접속하여 users01.dbf 복원 users01.dbf 복구 데이터베이스 open 및데이터파일 online 상태로변경 복구된 EMP 테이블 대상정보기술오라클지원팀 - 18 -
2-1-2. recovering the database Restore 와 recover 를할때 MOUNT 상태여야함. 1. scott 유저로접속하여 dept 테이블의 dname 컬럼을조회한다. 2. 모든데이터파일을삭제하여장애를발생시킨다. sys 유저로접속하여 v$datafile 을조회한다. Control file, redo log 를남기고모든 datafile 을삭제한다. 대상정보기술오라클지원팀 - 19 -
3. 장애확인 4. database shutdown 데이터파일이없어서정상종료가되지않는다. 따라서 abort 옵션으로강제종료한다. 5. MOUNT 상태로변경 대상정보기술오라클지원팀 - 20 -
6. RMAN 에접속하여 restore 및 recover 수행 RMAN> restore database; RMAN> recover database; SQL> alter database open; (SQL*Plus 또는 RMAN 에서도가능하다.) 2-1-3. recovering tablespaces 복구가필요한테이블스페이스가있다면다음의절차대로수행한다. 먼저테이블스페이스를 offline 상태로변경하고테이블스페이스복원, 테이블스페이스복구, 다시복구된테이블스페이스를 online 상태로변경한다. 대상정보기술오라클지원팀 - 21 -
1. scott 유저로접속하여 emp 테이블의 ename 을조회한다. 2. EXAMPLE 테이블스페이스의데이터파일삭제 dba_data_files 에서정보를조회한다. /oradata/ora9test/example01.dbf 삭제 대상정보기술오라클지원팀 - 22 -
3. restore & recover example tablespace 4. tablespace online SQL> alter tablespace example online; 5. emp table 조회 2-2. 불완전복구 (Incomplete recovery) 불완전복구는최근버젼이아닌 DB 백업을사용한다. 다른말로모든가장최근백업이후에발생된모든리두기록은적용되지않는다. 보통은다음과같은경우에불완전복구를수행한다. Media failure로인한모든 redo log file의손실 User error의경우, 예를들어의도하지않게 table을 drop하였을경우 Archive log file이없어완전복구를할수없을경우 최신 control file을손실하였을때 대상정보기술오라클지원팀 - 23 -
불완전복구를수행하기위해서는반드시되돌리고싶은이전의시간에백업본이있어야한다. 그리고복구후데이터베이스를 open할때 RESETLOGS옵션으로해야한다. 이후데이터베이스는 SCN을 1부터시작하게된다. 2-2-1. Incomplete Recovery of the Database 1. scott user로접속하여 emp테이블을조회한다. 2. emp 테이블에다음과같이 insert 를수행한다. 대상정보기술오라클지원팀 - 24 -
3. 다시 emp 테이블을조회하여 insert 가잘되었는지확인한다. 4. DB 의 id 를알아보기위해 sys 유저로접속하여 v$database 뷰를쿼리한다. 5. datafile, controlfile, redo log file 을모두삭제한다. 6. scott 유저로접속하고자하면오류가난다. 7. DB shutdown SQL> shutdown abort; 대상정보기술오라클지원팀 - 25 -
8. RMAN 에접속한다. Target DB 는접근하지않는다. 9. DBID를이용한복구절차 SET DBID 175864881; CONNECT TARGET SYS/ORACLE; STARTUP NOMOUNT; SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oracle/ora9testbackup/ora_cf%f'; RESTORE CONTROLFILE FROM AUTOBACKUP; STARTUP MOUNT; RESTORE DATABASE; RECOVER DATABASE; 대상정보기술오라클지원팀 - 26 -
대상정보기술오라클지원팀 - 27 -
Recover database 에서오류가난다. 이유는 online redo log file 까지손실되었기때문이다. 따라서 alter database open resetlogs; 로 open 한다. 10. 정상적으로데이터베이스가동작하는것을보기위해 scott 유저로접속하여 emp테이블을쿼리한다. 장애가발생하기전 insert하였던내용들이없어진것을볼수있다. 11. 새로운버전의아카이브로그를포함한데이터베이스를백업한다. 아카이브로그를 5회정도강제로발생시킨다. SQL> alter system switch logfile; 대상정보기술오라클지원팀 - 28 -
12. 필요한파일을백업받기위해 RMAN 에서다음과같은명령어를실행한다. RMAN> report need backup; 대상정보기술오라클지원팀 - 29 -
13. 데이터베이스와아카이브로그를백업한다. RMAN> backup database plus archivelog; 14. 필요없는백업들은제거한다. RMAN> delete obsolete; 15. CROSSCHECK 명령으로백업파일을검증한다. RMAN> crosscheck backup of database; 대상정보기술오라클지원팀 - 30 -
16. 필요없는파일을한번더지운다. RMAN> delete obsolete; 3. RMAN Advanced Features 3-1. Duplicate Database RMAN에서는 target DB의 copy본으로사용할수있는 DUPLICATE명령을사용할수있다. Duplicate database는 target DB의복사본으로다양한다음과같은용도로사용할수있다. 예를들어 백업, 복구과정의테스트용 실제사용하는데이터베이스 ( 실DB) 에서의도하지않게삭제된 table을 exp/imp할때 Duplicate database는 standby database와다르지만두타입의데이터베이스는 DUPLICATE명령에의해서생성된다. Statndby database는실db의 copy본으로실db의 archive log로주기적또는계속적으로업데이트된다. 만약실DB가장애나문제가생기면 standby database로 fail-over하고실 DB로서운영된다. 반면에 Duplicate database는 fail-over될수없다. 1. command 창에서 AUX DB를위한 password file을만든다. orapwd file=/oracle/product/920/dbs/orapwaux password=oracle entries=5 2. SQL*Plus에서 init파일을생성한다. SQL> create pfile='/oracle/product/920/dbs/initaux.ora' from spfile; 3. 만들어진 pfile을수정한다. /ora9test/ 라고된부분을 /auxora9test/ 로바꾼다. 다음으로 db_name과 instance_name을 aux로변경한다. 그리고다음과같이두줄을추가한다. db_file_name_convert=('/oradata/ora9test','/oradata/aux') log_file_name_convert=(''/oradata/ora9test','/oradata/aux') 4. 필요한디렉토리를생성한다. mkdir /oradata/aux mkdir /oracle/admin/aux mkdir /oracle/admin/aux/adump mkdir /oracle/admin/aux/bdump mkdir /oracle/admin/aux/cdump mkdir /oracle/admin/aux/udump mkdir /arch/auxora9test_arch 대상정보기술오라클지원팀 - 31 -
5. tnsnames.ora와 listener.ora파일에 aux 데이터베이스를추가해준다. Ex.> tnsnames.ora AUX = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = test.oracle.com)(port = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = aux) ) ) listener.ora (SID_LIST = 아래에추가해준다. (SID_DESC = (GLOBAL_DBNAME = aux) (ORACLE_HOME = /oracle/product/920) (SID_NAME = aux) ) 6. 리스너를재시작한다. $ lsnrctl stop $ lsnrctl start 대상정보기술오라클지원팀 - 32 -
7. RMAN에서다음과같이수행 RMAN CONNECT TARGET sys/oracle@ora9test CONNECT AUXILIARY sys/oracle@aux STARTUP CLONE NOMOUNT FORCE; DUPLICATE TARGET DATABASE TO AUX; Note: Windows에서는 RMAN에접속하기전에다음과같이수행한다. oradim -new -sid AUX -startmode m -pfile /oracle/product/920/dbs/initaux.ora 대상정보기술오라클지원팀 - 33 -
대상정보기술오라클지원팀 - 34 -