Presentation is loading. Please wait.

Presentation is loading. Please wait.

Make a Real DBA 백업과 복구 ㈜ 신한시스템즈 김 종 근.

Similar presentations


Presentation on theme: "Make a Real DBA 백업과 복구 ㈜ 신한시스템즈 김 종 근."— Presentation transcript:

1 Make a Real DBA 백업과 복구 ㈜ 신한시스템즈 김 종 근

2 백업과 복구 복구의 개념과 절차 백업 유형과 방법 실패 유형 별 복구 사례 백업/복구 정책 세우기 Q & A

3 복구의 개념과 절차 실패의 유형 복구의 개념 복구의 절차

4 실패의 유형 사용자 실수 Media Failure 재난, 재해 - DROP, TRUNCATE, DELETE, UPDATE, …
- 디스크 헤더, 컨트롤러, 파일 삭제, … - 지진, 화재, 홍수, 붕괴, 인력 손실, …

5 복구의 개념 완전 복구(Complete Recovery) 불완전 복구(Incomplete Recovery) fail
데이터 손실 Incomplete Recovery fail time Comlete Recovery

6 복구 절차(1) - Restore Restore Restore – 백업으로부터 손실된 파일을 복원 time a.dbf
b.dbf c.dbf 1.ctl a.dbf a.dbf 1.ctl b.dbf 1.log Restore 2.log c.dbf

7 복구 절차(2) – Recovery Recovery – 백업 이후 발생한 변경 사항을 적용 Recovery
Transaction(data changed) backup fail Recovery time (Change Apply) c.dbf a.dbf a.dbf 1.ctl b.dbf 1.log 1.ctl 2.log b.dbf a.dbf c.dbf

8 백업 유형과 방법 백업 유형 유형별 백업 방법

9 백업 유형 콜드 백업 핫 백업 익스포트 백업 백업 유형 백업 형태 데이터베이스 상태 장단점 물리적 백업 Offline
장점: 사용법이 쉽고, 이론적으로 간단하다. 단점: 완전 복구가 불가능하다.(데이터 손실 발생) 백업 수행 시간동안 서비스가 중단된다. 핫 백업 Online 장점: 데이터베이스 운영 중에도 백업을 수행할 수 있다. 데이터 손실 및 다운 타임을 최소화 할 수 있다. 단점: 추가적인 디스크 공간이 필요하다.(아카이브 파일) 추가적인 관리 작업이 필요하다. 논리적 백업 익스포트 백업 장점: 사용법이 쉽고, 간편하다. 오브젝트 단위의 백업/복구 가능하다. 다른 OS 및 다른 버전 간에 데이터 이동이 가능하다. 단점: 복구 시간이 많이 걸린다. 데이터 손실이 발생할 수 있다.

10 콜드 백업 순서 데이터베이스의 모든 파일 목록을 확인 데이터베이스 종료 데이터베이스의 모든 파일을 백업 저장소로 백업
데이터베이스 시작 후 서비스 개시

11 콜드 백업 – 파일 확인 SQL> select * from v$controlfile; STATUS NAME
/disk1/user07/ORADATA/u01/ctrl01.ctl SQL> select * from v$logfile; GROUP# STATUS TYPE MEMBER ONLINE /disk1/user07/ORADATA/u03/log02a.rdo ONLINE /disk1/user07/ORADATA/u03/log01a.rdo SQL> select name, status, enabled 2 from v$datafile; NAME STATUS ENABLED /disk1/user07/ORADATA/u01/system01.dbf SYSTEM READ WRITE /disk1/user07/ORADATA/u02/undotbs.dbf ONLINE READ WRITE /disk1/user07/ORADATA/u03/users01.dbf ONLINE READ WRITE /disk1/user07/ORADATA/u03/indx01.dbf ONLINE READ WRITE /disk1/user07/ORADATA/u02/sample01.dbf ONLINE READ WRITE /disk1/user07/ORADATA/u01/querydata01.dbf ONLINE READ ONLY

12 콜드 백업 – 백업 수행 SQL> shutdown immediate Database closed.
Database dismounted. ORACLE instance shut down. SQL> !cp /disk1/user07/ORADATA/u01/*.ctl /BACKUP SQL> !cp /disk1/user07/ORADATA/u02/*.rdo /BACKUP SQL> !cp /disk1/user07/ORADATA/u01/*.dbf /BACKUP SQL> !cp /disk1/user07/ORADATA/u02/*.dbf /BACKUP SQL> !cp /disk1/user07/ORADATA/u03/*.dbf /BACKUP SQL> startup ORACLE instance started. : Database mounted. Database opened. SQL>

13 핫 백업 데이터베이스가 아카이브 모드여야 한다. 테이블스페이스 단위 또는 데이터 파일 단위로 백업
온라인 리두 로그 파일은 백업하지 않는다. 백업이 완료된 후 백업 시작 전에 만들어진 아카이브 파일은 삭제해도 된다. 데이터베이스의 물리적 변경이 있을 때는 반드시 컨트롤 파일을 백업한다.

14 핫 백업 – 데이터파일 백업 SQL> select tablespace_name, file_name
2 from dba_data_files 3 order by tablespace_name TABLESPACE_NAME FILE_NAME INDX /disk1/user07/ORADATA/u03/indx01.dbf QUERY_DATA /disk1/user07/ORADATA/u01/querydata01.dbf SAMPLE /disk1/user07/ORADATA/u02/sample01.dbf SYSTEM /disk1/user07/ORADATA/u01/system01.dbf UNDOTBS /disk1/user07/ORADATA/u02/undotbs.dbf USERS /disk1/user07/ORADATA/u03/users01.dbf SQL> alter tablespace users begin backup; Tablespace altered. SQL> !cp /disk1/user07/ORADATA/u03/users01.dbf /BACKUP SQL> alter tablespace users end backup; Tablespace altered.

15 핫 백업 – 컨트롤파일 백업 SQL> alter database backup controlfile to '/BACKUP/control_ bak'; Database altered. SQL> alter database backup controlfile to trace; SQL> show parameter user_dump NAME TYPE VALUE user_dump_dest string $HOME/ADMIN/UDUMP eduserver% cd $HOME/ADMIN/UDUMP eduserver% ls -alt -rw-rw ora920 dba 월 28일 17:05 u07_ora_18969.trc -rw-rw ora920 dba 월 28일 17:04 u07_ora_18968.trc : eduserver% mv u07_ora_18969.trc /BACKUP/cre_con_ sql

16 핫 백업 – 아카이브 파일 관리 SQL> show parameter archive_dest NAME TYPE VALUE
log_archive_dest_1 string LOCATION=/disk1/user07/ORADATA/ARCHIVE1 log_archive_dest_2 string : eduserver% ls –al /disk1/user07/ORADATA/ARCHIVE1 -rw-rw ora920 dba 월 28일 11:48 arch_5.arc -rw-rw ora920 dba 월 28일 11:49 arch_6.arc -rw-rw ora920 dba 월 28일 11:52 arch_7.arc -rw-rw ora920 dba 월 28일 11:53 arch_8.arc : SQL> select * from v$log_history; RECID STAMP THREAD# SEQUENCE# FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# /05/28:16:59:

17 익스포트 백업(1) 익스포트 백업 모드 테이블 사용자 테이블스페이스 데이터베이스 exp tables= exp owner=
exp tablespace= exp full=y 테이블, 인덱스, 트리거, 제약 조건, 권한, … 해당 스키마 내의 모든 오프젝트 (다른 사용자 소유의 테이블에 만든 인덱스, 트리거 제외) 테이블 스페이스의 메타 데이터 SYS 소유의 오브젝트를 제외한 모든 데이터베이스 객체

18 익스포트 백업 - 테이블 eduserver% exp scott/tiger tables=emp,dept file=emp_dept.dmp log=emp_dept.log Export: Release Production on Fri May 28 18:29: Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to: Oracle9i Enterprise Edition Release bit Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release Production Export done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set About to export specified tables via Conventional Path ... . . exporting table EMP rows exported . . exporting table DEPT rows exported Export terminated successfully without warnings. eduserver% ls -al emp* -rw-rw-r user07 dba 월 28일 18:33 emp_dept.dmp -rw-rw-r user07 dba 월 28일 18:33 emp_dept.log

19 익스포트 백업 - 사용자 eduserver% exp system/manager owner=scott,hr file=scott_hr.dmp log=scott_hr.log Export: Release Production on Fri May 28 13:20: Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to: Oracle9i Enterprise Edition Release bit Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release Production Export done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set About to export specified users ... . exporting pre-schema procedural objects and actions . exporting foreign function library names for user SCOTT . exporting foreign function library names for user HR . exporting PUBLIC type synonyms : . about to export SCOTT's tables via Conventional Path ... . . exporting table BONUS rows exported Export terminated successfully without warnings.

20 익스포트 백업 - 데이터베이스 eduserver% exp system/manager full=y file=full_ dmp log=full_ log Export: Release Production on Fri May 28 13:25: Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to: Oracle9i Enterprise Edition Release bit Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release Production Export done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set About to export the entire database ... . exporting tablespace definitions . exporting profiles . exporting user definitions . exporting roles . exporting resource costs . exporting rollback segment definitions : Export terminated successfully without warnings.

21 실패 유형 별 복구 사례 데이터 파일 삭제 컨트롤 파일 오류 테이블 Drop DELETE FROM usertab;

22 삭제된 데이터 파일 복구(1) RESTORE – Restore from Backup
fail 10 19 11 12 13 14 15 16 17 18 20 time c.dbf b.dbf c.dbf 1.ctl 2.log 1.log a.dbf 1.ctl b.dbf a.dbf RESTORE – Restore from Backup RECOVERY – Apply Changing from Archive log & Online log file

23 삭제된 데이터 파일 복구(2) eduserver% ls -al 총 92324
drwxrwx ora920 dba 년 3월 7일 . drwxrwx ora920 dba 월 28일 11:49 .. -rwxrwx ora920 dba 월 28일 11:49 indx01.dbf -rwxrwx ora920 dba 월 28일 11:49 log01a.rdo -rwxrwx ora920 dba 월 28일 11:50 log02a.rdo -rwxrwx ora920 dba 월 28일 11:50 users01.dbf eduserver% rm users01.dbf eduserver% ls -al 총 51300 drwxrwx ora920 dba 월 28일 11:50 . drwxrwx ora920 dba 월 28일 11:49 .. -rwxrwx ora920 dba 월 28일 11:49 indx01.dbf -rwxrwx ora920 dba 월 28일 11:49 log01a.rdo -rwxrwx ora920 dba 월 28일 11:50 log02a.rdo eduserver%

24 삭제된 데이터 파일 복구(3) SQL> select * from dba_data_files; ERROR:
ORA-01116: error in opening database file 3 ORA-01110: data file 3: '/disk1/user07/ORADATA/u03/users01.dbf' ORA-27041: unable to open file SVR4 Error: 2: No such file or directory Additional information: 3 SQL> select file#, name, status 2 from v$datafile where file#=3; FILE# NAME STATUS 3 /disk1/user07/ORADATA/u03/users01.dbf ONLINE SQL> alter database datafile 3 offline; Database altered.

25 삭제된 데이터 파일 복구(4) eduserver% cd /disk1/user07/ORADATA/u03/
eduserver% cp /BACKUP/users01.dbf . eduserver% ls -al drwxrwx ora920 dba 월 28일 12:37 . drwxrwx ora920 dba 월 28일 11:49 .. -rwxrwx ora920 dba 월 28일 12:25 indx01.dbf -rwxrwx ora920 dba 월 28일 12:37 log01a.rdo -rwxrwx ora920 dba 월 28일 11:54 log02a.rdo -rwxrwx user07 dba 월 28일 12:37 users01.dbf eduserver% SQL> alter database datafile 3 online; alter database datafile 3 online * ERROR at line 1: ORA-01113: file 3 needs media recovery ORA-01110: data file 3: '/disk1/user07/ORADATA/u03/users01.dbf'

26 삭제된 데이터 파일 복구(5) SQL> recover datafile 3 ;
ORA-00279: change generated at 05/28/ :42:52 needed for thread 1 ORA-00289: suggestion : /disk1/user07/ORADATA/ARCHIVE1/arch_4.arc ORA-00280: change for thread 1 is in sequence #4 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} auto ORA-00279: change generated at 05/28/ :44:17 needed for thread 1 ORA-00289: suggestion : /disk1/user07/ORADATA/ARCHIVE1/arch_5.arc ORA-00280: change for thread 1 is in sequence #5 ORA-00278: log file '/disk1/user07/ORADATA/ARCHIVE1/arch_4.arc' no longer needed for this recovery : Log applied. Media recovery complete. SQL>

27 삭제된 데이터 파일 복구(6) SQL> select file#, name, status 2 from v$datafile;
1 /disk1/user07/ORADATA/u01/system01.dbf SYSTEM 2 /disk1/user07/ORADATA/u02/undotbs.dbf ONLINE 3 /disk1/user07/ORADATA/u03/users01.dbf OFFLINE 4 /disk1/user07/ORADATA/u03/indx01.dbf ONLINE 5 /disk1/user07/ORADATA/u02/sample01.dbf ONLINE 6 /disk1/user07/ORADATA/u01/querydata01.dbf ONLINE 6 rows selected. SQL> alter tablespace users online; Tablespace altered. SQL> select tablespace_name, status from dba_tablespaces where tablespace_name = 'USERS'; TABLESPACE_NAME STATUS USERS ONLINE

28 컨트롤 파일 오류로부터 복구(1) SQL> startup ORACLE instance started.
Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes ORA-00205: error in identifying controlfile, check alert log for more info eduserver% cat initU07.ora | grep control control_files =$HOME/ORADATA/u01/ctrl01.ctl eduserver% ls -al $HOME/ORADATA/u01/ -rwxrwx ora920 dba 년 3월 7일 querydata01.dbf -rwxrwx ora920 dba 월 28일 17:00 system01.dbf

29 컨트롤 파일 오류로부터 복구(2) SQL> shutdown ORA-01507: database not mounted
ORACLE instance shut down. eduserver% vi init*.ora control_files =/BACKUP/control_ bak SQL> startup mount ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted.

30 컨트롤 파일 오류로부터 복구(3) SQL> alter database backup controlfile to trace;
Database altered. SQL> shutdown ORA-01109: database not open Database dismounted. ORACLE instance shut down. eduserver% ls -alt -rw-rw ora920 dba 월 28일 17:05 u07_ora_18969.trc -rw-rw ora920 dba 월 28일 17:04 u07_ora_18968.trc -rw-rw ora920 dba 월 28일 17:02 u07_ora_18940.trc eduserver% mv u07_ora_18969.trc cre_con.sql

31 컨트롤 파일 오류로부터 복구(4) STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "U07" NORESETLOGS ARCHIVELOG -- SET STANDBY TO MAXIMIZE PERFORMANCE MAXLOGFILES 16 MAXLOGMEMBERS 2 MAXDATAFILES 30 MAXINSTANCES 1 MAXLOGHISTORY 113 LOGFILE GROUP 1 '/disk1/user07/ORADATA/u03/log01a.rdo' SIZE 10M, GROUP 2 '/disk1/user07/ORADATA/u03/log02a.rdo' SIZE 10M -- STANDBY LOGFILE DATAFILE '/disk1/user07/ORADATA/u01/system01.dbf', '/disk1/user07/ORADATA/u02/undotbs.dbf', '/disk1/user07/ORADATA/u03/users01.dbf', '/disk1/user07/ORADATA/u03/indx01.dbf', '/disk1/user07/ORADATA/u02/sample01.dbf' CHARACTER SET WE8ISO8859P1 ; RECOVER DATABASE ALTER SYSTEM ARCHIVE LOG ALL; ALTER DATABASE OPEN; ALTER DATABASE RENAME FILE 'MISSING00006' TO '/disk1/user07/ORADATA/u01/querydata01.dbf'; ALTER TABLESPACE "QUERY_DATA" ONLINE;

32 컨트롤 파일 오류로부터 복구(5) eduserver% sqlplus "/as sysdba"
SQL*Plus: Release Production on Fri May 28 17:11: Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to an idle instance. SQL> @cre_con ORACLE instance started. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Control file created. ORA-00283: recovery session canceled due to errors ORA-00264: no recovery required System altered. Database altered. Tablespace altered. SQL>

33 Drop 된 테이블 복구 익스포트 백업으로부터 임포트
SQL> drop table emp; Table dropped. 익스포트 백업으로부터 임포트 TSPITR(Tablespace Point In Time Recovery)를 응용한 복구

34 Drop 된 테이블 복구(import) eduserver% imp system/manager tables=emp fromuser=scott touser=scott file=full.dmp Import: Release Production on Fri May 28 10:50: Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to: Oracle9i Enterprise Edition Release bit Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release Production Export file created by EXPORT:V via conventional path import done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set . importing SCOTT's objects into SCOTT . . importing table "EMP" rows imported Import terminated successfully without warnings. eduserver%

35 Drop 된 테이블 복구(TSPITR)(1)
Table dropped 10 19 11 12 13 14 15 16 17 18 20 time a.dbf b.dbf c.dbf 1.ctl b.dbf c.dbf 1.ctl 2.log 1.log a.dbf

36 Drop 된 테이블 복구(TSPITR)(2)
b.dbf c.dbf 1.ctl 2.log 1.log a.dbf Table dropped 10 11 12 13 14 15 16 17 18 19 20 time a.dbf b.dbf c.dbf 1.ctl Incomplete Recovery 2.log 1.log

37 Drop 된 테이블 복구(TSPITR)(3)
b.dbf c.dbf 1.ctl 2.log 1.log a.dbf Table dropped 10 11 12 13 14 15 16 17 18 19 20 time Incomplete Recovery a.dbf b.dbf c.dbf 1.ctl 2.log 1.log TABLE EXPORT emp.dmp

38 Drop 된 테이블 복구(TSPITR)(4)
Table dropped 10 11 12 13 14 15 16 17 18 19 20 time b.dbf c.dbf 1.ctl 2.log 1.log a.dbf TABLE IMPORT emp.dmp

39 삭제된 데이터 복구(1) 로그마이너(8i이상) 이용 복구 SQL> delete from emp;
14 rows deleted. SQL> commit; Commit complete. 로그마이너(8i이상) 이용 복구 SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME YES UNUSED NO CURRENT /05/24:09:51:48 SQL> select * from V$logfile; GROUP# STATUS TYPE MEMBER ONLINE /disk1/user07/ORADATA/u03/log02a.rdo ONLINE /disk1/user07/ORADATA/u03/log01a.rdo

40 삭제된 데이터 복구(2) SQL> conn /as sysdba Connected.
SQL> show parameter utl NAME TYPE VALUE utl_file_dir string /disk1/user07/UTL_FILE SQL> exec dbms_logmnr_d.build('mydict.ora','/disk1/user07/UTL_FILE') PL/SQL procedure successfully completed. eduserver% cd /disk1/user07/UTL_FILE eduserver% ls -al -rw-rw-r ora920 dba 월 27일 19:45 mydict.ora

41 삭제된 데이터 복구(3) SQL> conn /as sysdba Connected.
SQL> exec dbms_logmnr.add_logfile('/disk1/user07/ORADATA/u03/log02a.rdo',DBMS_LOGMNR.NEW) PL/SQL procedure successfully completed. SQL> exec dbms_logmnr.start_logmnr(DICTFILENAME => '/disk1/user07/UTL_FILE/mydict.ora') PL/SQL procedure successfully completed.

42 삭제된 데이터 복구(4) SQL> select TO_CHAR(timestamp,'MM/DD:HH24:MI:SS'), username, operation, sql_redo, sql_undo 2 from v$logmnr_contents 3 where seg_name='EMP' and timestamp>to_date('2004/05/27:19:00','yyyy/mm/dd:hh24:mi') 4 order by timestamp; TO_CHAR(TIMEST USERNAME OPERATION SQL_REDO SQL_UNDO 05/27:19:35:15 SCOTT DELETE delete from "SCOTT"."EMP" where "EMPNO" = '7369' and "ENAME" = 'SMITH' and "JOB" = 'CLERK' and "MGR" = '7902' and "HIREDATE" = TO_DATE('1980/12/17:00:00:00', 'yyyy/mm/dd:hh24:mi:ss ') and "SAL" = '800' and "COMM" IS NULL and "DEPTNO" = '20' and ROWID = 'AAABdFAADAAAAAXAA A'; insert into "SCOTT"."EMP"("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") va lues ('7369','SMITH','CLERK','7902',TO_DATE('1980/12/17:00:00:00', 'yyyy/mm/dd:hh24:mi:ss' ),'800',NULL,'20'); : 14 rows selected.

43 삭제된 데이터 복구(5) SQL> spool a.sql SQL> select sql_undo
2 from v$logmnr_contents 3 where seg_name='EMP' and timestamp>to_date('2004/05/27:19:00','yyyy/mm/dd:hh24:mi') 4 order by timestamp; SQL> spool off SQL> exec dbms_logmnr.end_logmnr 1 row created. SQL> commit; Commit complete. SQL> select count(*) from emp; COUNT(*) 14

44 복구 방법 및 복구 소요 시간에 따른 백업 방법 및 백업 주기 정의
백업 / 복구 정책 세우기 예상 가능한 모든 실패 유형 정의 실패 시 복구 방법 및 복구 소요 시간 정의 복구 방법 및 복구 소요 시간에 따른 백업 방법 및 백업 주기 정의 온라인 트랜잭션의 영향을 고려 백업 시간 정의 백업 / 복구 테스트

45 디스크 (1번 디스크-데이터 파일만 있음) 실패: 데이터베이스 Online
백업 / 복구 정책 예(1) 디스크 (1번 디스크-데이터 파일만 있음) 실패: 데이터베이스 Online 30분 이내 완전복구 이틀 주기로 디스크로 핫 백업 후 테이프로 이동 아카이브 파일은 최근 이틀 발생량은 디스크에 보관 백업 시간: 화, 목, 토요일 03:00~04:00 백업 / 복구 테스트

46 백업 / 복구 정책 예(2) 복구 중 백업 미디어 오류 발생 이런 일 있으면 안됨 디스크를 1차 백업 저장소로 하고
테이프로는 2개의 복사본을 만들어 관리 디스크 백업 후 테이프 복사본 생성 백업 / 복구 테스트

47 감사합니다

48 Q & A


Download ppt "Make a Real DBA 백업과 복구 ㈜ 신한시스템즈 김 종 근."

Similar presentations


Ads by Google