일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 분당맛집
- 중복
- 삼계탕
- 냉삼맛집
- 냉삼
- 일로집
- 미금냉삼
- 팟타이맛집
- 태국현지느낌식당
- 영등포구청역맛집
- 초복
- 태국맛집
- 진타이식당
- 정자맛집
- 냉동삼겹살
- 냉동삼겹살맛집
- 영등포삼계탕
- 미금맛집
- 구리맛집
- 문래삼계탕
- 눈썹문신제거#붉은잔흔#잠실새내눈썹문신제거#붉은잔흔제거#눈썹문신
- 쌀국수맛집
- 팟타이
- 인삼주
- 미금
- 말복
- 오이삼계탕
- 진타이
- 쌀국수
- 반계탕
- Today
- Total
부리부리
ORACLE 백업복원종류 본문
백업
1.close 백업 - 무조건 SHUTDOWN 시켜야함
2.open 백업
복구
1. noarchive mode--닫힌복구
다른위치에 복구(imsy)
1. archive mode-완전복구(4가지) - 자주씀
1) 닫힌 데이터베이스 복구(System tablespace 문제시-shutdown)
2) 열린 데이터베이스 복구(일반 tablespace 문제시-offline)
3) 다른위치에 datafile복구(imsy)
4) 백업하지 않은 datafile복구
불완전복구(3가지)
1) 시간기반 복구
2) 취소기반 복구(아카이브 로그의 손실발생)
3) 백업control파일을 이용한 복구(아카이브로그가 아닌 ctl파일에서복구)
log파일 복구(4가지)
1)대기 상태 그룹의 멤버문제
2)대기 상태 그룹의 문제(2가지: Open, Close복구)
3)Current 로그 장애(2가지: Open, Close복구)
4)전체삭제(2가지 : 모든 Redolog파일 삭제, 모든 Control파일 삭제)
SYS@TestDB> ARCHIVE LOG LIST
데이터베이스 로그 모드 아카이브 모드가 아님
자동 아카이브 사용 안함으로 설정됨
아카이브 대상 USE_DB_RECOVERY_FILE_DEST
가장 오래된 온라인 로그 순서 33
현재 로그 순서 35
SYS@TestDB> @LOG
GROUP# MEMBER BYTES SEQUENCE# STATUS
---------- ----------------------------- ---------- ---------- -----------
1 C:\APP\ITWILL\ORADATA\TESTDB\ 52428800 34 INACTIVE
REDO01.LOG
2 C:\APP\ITWILL\ORADATA\TESTDB\ 52428800 35 CURRENT
REDO02.LOG
3 C:\APP\ITWILL\ORADATA\TESTDB\ 52428800 33 INACTIVE
REDO03.LOG
log_archive_dest_1='location=c:\aDisk\arc1'
log_archive_dest_2='location=c:\aDisk\arc2' --저장위치 설정
log_archive_format=%s_%t_%r.arc --만들어졌을때 어떻게 만들어지는지 설정해줌
SYS@TestDB> STARTUP MOUNT
ORACLE 인스턴스가 시작되었습니다.
Total System Global Area 3390558208 bytes
Fixed Size 2180464 bytes
Variable Size 1862273680 bytes
Database Buffers 1509949440 bytes
Redo Buffers 16154624 bytes
데이터베이스가 마운트되었습니다.
SYS@TestDB> ALTER DATABASE ARCHIVELOG;
데이타베이스가 변경되었습니다.
SYS@TestDB> ALTER DATABASE OPEN ;
SYS@TestDB> ARCHIVE LOG LIST
데이터베이스 로그 모드 아카이브 모드
자동 아카이브 사용으로 설정됨
아카이브 대상 c:\adisk\arc2
가장 오래된 온라인 로그 순서 33
아카이브할 다음 로그 35
현재 로그 순서 35
SYS@TestDB> @SWITCH
시스템이 변경되었습니다.
시스템이 변경되었습니다.
아카이브 로그 생성됨
%S= CURRENT / %T = FILE갯수
SYS@TestDB> SHUTDOWN IMMEDIATE
기본 DATABASE에 있는 파일들을 복사해서
(ARCHIVE LOG 를 활성화한상태를 BACKUP한거임)
SYS@TestDB> STARTUP
1.닫힌 DB복구 (System tablespace 문제시-shutdown)
SYS@TestDB> @DDF
TABLESPACE_ NAME BYTES FILE_NAME
---------------- ---------- -----------------------------
SYSTEM 723517440 C:\APP\ITWILL\ORADATA\TESTDB\
SYSTEM01.DBF -해당파일이 문제있을때
기존에 TEST TABLE이 있어서 삭제 작업해줌
SYS@TestDB> SELECT TABLESPACE_NAME FROM DBA_TABLES WHERE TABLE_NAME='TEST';
TABLESPACE_NAME
----------------
SYSTEM
->SHUTDOWN 하고 SYSTEM01.DBF 지움 (문제발생 /HDD망가진상태)
SYS@TestDB> STARTUP
ORACLE 인스턴스가 시작되었습니다.
Total System Global Area 3390558208 bytes
Fixed Size 2180464 bytes
Variable Size 1862273680 bytes
Database Buffers 1509949440 bytes
Redo Buffers 16154624 bytes
데이터베이스가 마운트되었습니다.
ORA-01157: 데이터 1 파일을 식별 또는 잠금 할 수 없습니다- DBWR 추적 파일을
보십시오
ORA-01110: 1 데이터 파일: 'C:\APP\ITWILL\ORADATA\TESTDB\SYSTEM01.DBF'
현재 MOUNT상태
->백업해둔 SYSTEM01.DBF를 복사해서 붙여넣기 (근데 같은 FAM이 아님)
AUTO -> 알아서 아카이브 로그 복구를진행함
SYS@TestDB> SELECT * FROM TEST;
NO
----------
10
20
30
40
50
60
6 개의 행이 선택되었습니다.
-->복구완료
2.열린 데이터베이스 복구(일반 tablespace 문제시-offline)
-DB가 살아있는 상태에서 USERS01.DBF 지우기
-ARCHIVE BACKUP 파일에서 USERS01.DBF복사해서 TESTDB로 넣기
SYS@TestDB> RECOVER TABLESPACE USERS;
ORA-00279: 변환 1708678가 (01/29/2019 10:19:13에서 생성된) 스레드 1에
필요합니다
ORA-00289: 제안 : C:\ADISK\ARC2\37_1_996676780.ARC
ORA-00280: 변환 1708678(스레드 1를 위한)가 시퀀스번호 37에 있습니다
로그 지정: {<RET>=suggested | filename | AUTO | CANCEL}
AUTO
ORA-00279: 변환 1709039가 (01/29/2019 11:17:24에서 생성된) 스레드 1에
필요합니다
ORA-00289: 제안 : C:\ADISK\ARC2\38_1_996676780.ARC
ORA-00280: 변환 1709039(스레드 1를 위한)가 시퀀스번호 38에 있습니다
불완전 복구는 업무상 중요한 데이타베이스를 위한 최적의 복구 솔루션이 아니다. 이 작업에서는 데이타베이스가 오류 전의 시점으로 복원 및 복구되기 때문에 데이타 손실이 발생한다. DBA는 불완전 복구를 가져올 수 있는 다양한 상황을 이해해야 한다. 아카이브 로그 파일 누락, 모든 제어 파일 손실, 아카이브되지 않은 모든 로그 파일 및 데이타 파일 손실, 테이블 삭제 같은 사용자 오류 등을 생각할 수 있다. 이러한 상황을 이해하면 DBA는 데이타베이스를 구성하거나 불완전 복구 작업을 방지하는 백업 작업을 수행할 수 있다
1. 시간기반 복구 /데이터 삭제시 실수로 테이블삭제
사용자가 실수로 TABLE을 DROP할 경우에 DDL의 특성상 AUTO COMMIT이 되어버리기 때문에 완전 복구를 시도할 경우 DROP된 상태로 복구가 되어버린다. 이런경우 사용하는 복구
EX) 현재 10시면 9시에 DB상태로 복구
5초 뒤 COMMIT
실수로 DROP해버림
KIM@TestDB> DROP TABLE INSA1;
관리자
SYS@TestDB> SHUTDOWN IMMEDIATE
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SYS@TestDB> STARTUP MOUNT;
ORACLE 인스턴스가 시작되었습니다.
Total System Global Area 3390558208 bytes
Fixed Size 2180464 bytes
Variable Size 1862273680 bytes
Database Buffers 1509949440 bytes
Redo Buffers 16154624 bytes
데이터베이스가 마운트되었습니다.
->BACKUP 폴더에서 DBF만 복사후 ORADATA로 덮어씌움
->복구
SYS@TestDB> SET AUTORECOVERY ON
INSERT한 시간 3초전으로 복구
SYS@TestDB> RECOVER DATABASE UNTIL TIME '2019-01-29:15:11:10'
매체 복구가 완료되었습니다.
->불안전하게 복구
SYS@TestDB> ALTER DATABASE OPEN RESETLOGS;
데이타베이스가 변경되었습니다.
->LOG 를 초기화시켜버림
SYS@TestDB> @SWITCH
시스템이 변경되었습니다.
->ARCHIVE LOG는 1번 부터 다시 생성됨
(회사에서는 1번 빼고 나머지 삭제)
2. 취소기반 복구(아카이브 로그의 손실발생)/데이터 삭제시 실수로 테이블삭제
아카이브 파일이 중간에 삭제 된경우 1,2,3,5,6,7~
복구를 진행할때 4번 복구할때 사용자가CANCEL해버림
SET AUTORECOVERY ON일경우 끝까지 복구를 진행해버리기때문에 OFF로 변경
INSERT 30,40 -> COMMIT -> @SWITCH
INSERT 50 -> COMMIT -> @SWITCH
INSERT 60,70 -> COMMIT -> @SWITCH / ARCHIVE LOG 43 ->@SWITCH * 3
KIM@TestDB> DROP TABLE INSA1;
SYS@TestDB> SELECT SEQUENCE#,
2 TO_CHAR(FIRST_TIME,'YYYY-MM-DDHH24:MI:SS')
3 FROM V$LOG_HISTORY;
->ARCHIVE LOG 44삭제
ARCHIVE BACKUP 폴더에 DBF파일만 복사후 TESTDB에 덮어씌운다
44번이 오면 CANCEL
매체 복구가 취소되었습니다.
SYS@TestDB> ALTER DATABASE OPEN RESETLOGS;
데이타베이스가 변경되었습니다.
KIM@TestDB> SELECT * FROM INSA1;
ID NAME HDATE
---------- ---------- --------
10 ONE 19/01/29
20 TWO 19/01/29
30 THREE 19/01/29
40 FOUR 19/01/29
50 FIVE 19/01/29
3. 백업control파일을 이용한 복구(아카이브로그가 아닌 ctl파일에서복구)
-테이블삭제시 실수로 테이블 스페이스 삭제
TEST.DBF 삭제됨
->ERROR는 상관안해도 된다(왜냐면 불안전 복구이기 때문에 )
->복구완료!
▶log파일 복구(4가지)
1.대기 상태 그룹의 멤버문제 (INACTIVE상태)
-각 그룹에 멤버 추가
※ GROUP2 MEMEBER가 문제 생김! -> SHUTDOWN 후 REDO02B 삭제
-> 간단함
2. 대기 상태 그룹의 문제(2가지: Open, Close복구)
->REDO03,REDO03B 삭제
->기억지워주기
->명령어로 인해 껍데기 파일이 생성됨 ->REDO03 파일 지워준다
->@SWITCH * 3
->INACTIVE상태로 변경됨
3. Current 로그 장애(2가지: Open, Close복구)
현재 CURRENT된 LOG FILE삭제
마지막 ARCHIVE LOG 43
SYS@TestDB> ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 1;
->BACKUP 폴더에 DBF만 복사후 C:\app\itwill\oradata\TestDB 안에덮어씌우기
->초기화 시키고 @SWITCH 후 UNUSED 에서 INACTIVE로 변경됨
4. 전체삭제(2가지 : 모든 Redolog파일 삭제, 모든 Control파일 삭제)
->수동으로 TRACE파일 생성
->SHUTDOWN 후 LOG파일 모두 삭제
-OPEN BACKUP FILE
alter tablespace system begin backup;
!cp /home/oracle/oradata/testdb/system01.dbf /data/backup/open/
alter tablespace system end backup;
alter tablespace undo begin backup;
!cp /home/oracle/oradata/testdb/undo01.dbf /data/backup/open/
alter tablespace undo end backup;
--아카이브활성화되어있어야함
alter tablespace users begin backup;
!cp /home/oracle/oradata/testdb/users01.dbf /data/backup/open/
alter tablespace users end backup;
alter tablespace sysaux begin backup;
!cp /home/oracle/oradata/testdb/sysaux01.dbf /data/backup/open/
alter tablespace sysaux end backup;
alter tablespace example begin backup;
!cp /home/oracle/oradata/testdb/example01.dbf /data/backup/open/
alter tablespace example end backup;
alter database backup controlfile to '/data/backup/open/control.ctl';
'ORACLE' 카테고리의 다른 글
D:\query\LEE (0) | 2019.01.29 |
---|---|
D:\query\KIM (0) | 2019.01.28 |
CHAINNING (0) | 2019.01.28 |
INDEX 단편화 (0) | 2019.01.28 |
ORACLE 6장 CONTROL FILE (0) | 2019.01.24 |