오라클 db 장애와 복구
DESCRIPTION
오라클 DB 장애와 복구. PLAN 정보기술 Consultant 주종면 [email protected] 011-864-1858. < 주의 > 파일을 인쇄하실 때에는 “인쇄”에서 “흑백으로 인쇄” 를 클릭하셔야 파란 배경 없이 깨끗이 인쇄가 됩니다. - 목 차 -. 1. 오라클 서버의 구조와 복구 원리 2. 오라클 DB 의 안전한 구조설계 3. 노 - 아카이브와 아카이브 모드 4. 플래시 - 백 데이터베이스 5. 데이터 가드 6. 장애복구 시간의 산정. 1. - PowerPoint PPT PresentationTRANSCRIPT
오라클 DB 장애와 복구 오라클 DB 장애와 복구
PLAN 정보기술 Consultant 주종면 [email protected]
011-864-1858
< 주의 > 파일을 인쇄하실 때에는 “인쇄”에서 “흑백으로 인쇄” 를 클릭하셔야 파란 배경 없이 깨끗이 인쇄가 됩니다.
1. 오라클 서버의 구조와 복구 원리
2. 오라클 DB 의 안전한 구조설계
3. 노 - 아카이브와 아카이브 모드
4. 플래시 - 백 데이터베이스
5. 데이터 가드
6. 장애복구 시간의 산정
- 목 차 -
오라클 서버의 구조와 복구원리
1
오라클 서버의 구조오라클 서버의 구조
Shared pool
SMONDBWR LGWRCKPTPMON
파일
Control files
Data files Redo logfiles
사용자사용자프로세스프로세스
서버서버프로세스프로세스
PGA
Flash-Back
DatabaseLogs
Data Buffer Data Buffer CacheCache
Log BufferLog Buffer
Large PoolLarge Pool
RVWR
ParameterFile
Stream PoolStream Pool
Java PoolJava Pool
ARCH
Archivefiles
Archivefiles
MMAN
SGA
MMONRECO RBALORBnRFS MRP
INSTANCESnnnDnnn
Select 문의 처리Select 문의 처리
Instance
SGA Shared pool
Librarycache
Redo logbuffer
Database buffercache
Datadictionary
cache
%sqlplus scott/tiger%sqlplus scott/tiger 2
Control files
Redo logfiles
Data files
Database
3
4
사용자사용자프로세스프로세스
. . 구문분석구문분석(Parse)(Parse)
. . 접속일자접속일자
. . 사용자사용자 / / 암호암호
1> SELECT *
2> FROM emp
3> ORDER BY ename;
1> SELECT *
2> FROM emp
3> ORDER BY ename;
. . 실행실행 (Execute)(Execute)
. . 인출인출 (Fetch)(Fetch)
EMP1 주종면부산2 주영현서울
1 주종면부산2 주영현서울서버서버
프로세스프로세스PGA
1
SELECT *FROM empORDER BY ename;
Instance
SGA Shared pool
Librarycache
Redo logbuffer
Database buffercache
Datadictionary
cache
1 주종면 100
DML 문의 처리DML 문의 처리
1
ServerServerprocessprocess
Control files
Redo logfiles
Data files
Database
2
4
사용자사용자프로세스프로세스
. . 구문분석구문분석(Parse)(Parse)
. . 접속일자접속일자
. . 사용자사용자 / / 암호암호
UPDATE emp
SET sal=sal*1.1
WHERE empno=1;
UPDATE emp
SET sal=sal*1.1
WHERE empno=1;
. . 실행실행 (Execute)(Execute)
%sqlplus scott/tiger%sqlplus scott/tigerEMP
1 주종면 1002 주영현 120
1 주종면 1001 주종면 110
RBS01
Rollback-block
UPDATE empSET sal=sal*1.1WHERE empno=1
1 주종면 110
1 주종면 100
3
DBA_TABLES
Shared pool
Redo logbuffer
DBWR
Data files
COMMIT 문 처리COMMIT 문 처리
서버서버프로세스프로세스
LGWR
3사용자사용자
프로세스프로세스
Database buffercache
SGA
Instance
Sql> commit
;
Sql> commit
;
1
5
1 주종면 1001 주종면 110
2 주영현 1202 주영현 132
7
EMP1 주종면 1102 주영현 132
4
Committed.Committed.
Committed.
Redo logfiles
SCN:80141 주종면 1001 주종면 110
102
2 주영현 1202 주영현 132
103
CKPT
8014
6
Control files
103
8014
8014
8014
1 주종면 1102 주영현 132
1 주종면 1002 주영현 120
2
SCN:8014 UPDATE empSET sal=sal*1.1WHERE empno=1
RBS01
시작과 종료시작과 종료SQL> StartupInstance Started.Finxed SizeDataBuffer Cache 3000000Log Buffer 8192Shared pool Buffer 3500000Database mounted.Database opened.
메모리 (Instance)
SGA Shared pool
SMONDBWR LGWRCKPT PMON
Data Data Buffer Buffer CacheCache
Log Log BufferBuffer Large Large
PoolPool
1) Init.ora 를 읽는다 .2) SGA 영역을 만든다 . 3) Background 프로세스를 만든다 .4) Alert_<DB 명 >.log 에 정보를 변경한다 .1
Init.oradb_name=ORA9Shared_pool_size=1000Log_buffer=8192
1) control.ctl( 컨트롤파일 ) 을 읽는다 .2) init.ora 와 Control 파일 정보를 읽는다 . 3) db_name 값이 일치하는지 검사한다 .4) 상태정보를 읽는다 .
Control.ctldb_name=ORA9C:\SYSTEM.DBFD:\INSA.DBF E:\RBS.DBF
2
C:\SYSTEM.DBF
D:\INSA.DBF
E:\RBS.DBF
1)Control 파일의 정보를 이용하여 파일들의 무결성을 확인한다 .2) 일반 사용자가 데이터베이스에 접속할 수 있도록 허용한다 .
3
데이터베이스의 구조분석데이터베이스의 구조분석
SYSTEM01.DBF
SCN:100
UNDOTBS01.DBF
SCN:100
TEMP01.DBF
SCN:100
USERS01.DBF
SCN:100
QUERY01.DBF
SCN:100
데이터 파일
CONTROL01.CTL
SCN:100
CONTROL02.CTL
SCN:100
CONTROL03.CTL
SCN:100
컨트롤 파일
REDO01.LOG
SCN:100
REDO02.LOG
SCN:100
REDO03.LOG
SCN:100
리두로그 파일
INIT.ORA
파라메터 파일
CONTROL.CTL
DB Name : ORA92SCN : 100Log-S/N : 57SYSTEM : C:\SYSTEM.DBF 100M ON-LINEUNDO : C:\UNDO01.DBF 300M ON-LINETEMP : C:\TEMP01.DBF 200M ON-LINEUSERS : C:\USERS01.DBF 500M OFF-LINEREDO1 : D:\REDO1.LOG 500K ON-LINEREDO2 : D:\REDO2.LOG 500K ON-LINE
Max Data Files : 1200MaxLog files : 10MaxLog Member : 5
Characterset : KO16KSC5601
Control Files
100
100
C:\SYSTEM.DBF
100
C:\TEMP01.DBF
100
C:\UNDO01.DBF
100
C:\USERS01.DBF
무결성의 검증무결성의 검증SQL> StartupInstance Started.Finxed SizeDataBuffer Cache 3000000Logo Buffer 8192Shared pool Buffer 3500000Database mounted.
ORA-01157 데이터 9 파일을 식별 또는 잠금할 수 없습니다ORA-01110 : 9 데이터 파일 : c:\users01.dbf
Data files
Log files
Controlfiles
Parameterfiles
100
2001 년 6 월 30 일 Backup
Data files Log files
Controlfiles
Parameterfiles
101
2001 년 7 월 31 일 Backup
Oracle9i
Data files Log files
Controlfiles
Parameterfiles
102
ControlFiles-101
System Change NumberSystem Change Number
현재시점
1 2
3
REDO1.LOGSYSTEM.DBF
256UNDO.DBF
TEMP.DBF
INSA.DBF
REDO2.LOG
INIT.ORA
257
80014 80014
80014
Data Files Redo-Log Files Parameter File
DB_NAME=ORA8
80014
80014
80014
1 주종면 1001 주종면 110
2 주영현 1202 주영현 132
,,,,,,
,,,,,
,,,,,
,,,,,
CONTROL.CTL
DB Name : ORA9SCN : 800014Log-S/N : 257SYSTEM : C:\SYSTEM.DBF 100M ON-LINEUNDO : C:\UNDO.DBF 300M ON-LINETEMP : C:\TEMP.DBF 200M ON-LINEINSA : C:\INSA.DBF 500M ON-LINEREDO1 : D:\REDO1.LOG 500K ON-LINEREDO2 : D:\REDO2.LOG 500K ON-LINEMax Data Files : 1200MaxLog files : 10MaxLog Member : 5Characterset : KO16KSC5601
Control Files
80014
CREATE DATABASE ora90LOGFILE GROUP 1 (‘c:\oracle\oradata\ora90\redo01.log’) size 10m, GROUP 2 (‘c:\oracle\oradata\ora90\redo02.log’) size 10m)DATAFILE ‘c:\oracle\oradata\ora90\system01.dbf’ size 100mUNDO TABLESPACE undo DATAFILE ‘c:\oracle\oradata\ora90\undo01.dbf’ size 50mDEFAULT TEMPORARY TABLESPACE temp TEMPFILE ‘c:\oracle\oradata\ora90\temp01.dbf’ size 30m EXTENT MANAGEMENT LOCAL UNIFORM size 1mCHARACTER SET ko16ksc5601NATIONAL CHARACTER SET al16utf16SET TIME_ZONE = ‘Korea/Seoul’;
Files 구조Files 구조 V$CONTROLFILEV$CONTROLFILE_RECORD_SECTIONV$DATABASE
백업과 복구방법Backup Method Recovery Method
Full DB Recovery
NoArchive Mode
Complete Recovery
1) Full DB
2) Tablespace
3) Datafile
InComplete Recovery
1) Cancel Based
2) Time Based
3) Change Based
4) 컨트롤 파일 및 Redo-Log 의 유실
Archive Mode
OffLine Backup
(Close, Cold Backup)
Physical (Archive, NoArchive)
Export/Import Utility
Logical Mode
OnLine Backup
(Open, Hot Backup)
Physical (Archive)
RMAN Utility
Physical (Archive, NoArchive)
오라클 DB 의 안전한 구조설계
2
테이블의 유형파티션 유무
클러스터 유무
논 - 파티션 테이블( 논리적 테이블 )
파티션 테이블( 물리적 테이블 )
수직 파티션 테이블
수평 파티션 테이블 범위 파티션 테이블
해시 파티션 테이블
리스트 파티션 테이블논 - 클러스터 테이블( 논리적 테이블 )
클러스터 테이블( 물리적 테이블 )
인덱스 클러스터 테이블
해시 클러스터 테이블
논 - 파티션 테이블 & 파티션 뷰
Create tablespace chulDatafile ‘d:\data\chul.dbf’ size 500m;
Create table jeon(idate date, no char(2), name v2(20), qty number)Tablespace chul;
D:\data\insa1.dbf
199912 1 tv tube 100200001 2 power cable……………………
jeon
Create tablespace chul1999Datafile ‘d:\data\chul1999.dbf’ size 500m;
Create tablespace chul2000Datafile ‘e:\data\chul2000.dbf’ size 500m;
Create table jeon1999(idate date, no char(2), name v2(20), qty number)Tablespace chul1999;Create table jeon2000(idate date, no char(2), name v2(20), qty number)Tablespace chul2000;
Create view tot_chulAs select * from chul1999Union all select * from chul2000;
D:\data\chul1999.dbf
199912 1 tv tube 100……………………
jeon1999
E:\data\chul12000.dbf
200001 2 power cable……………………
jeon2000
파티션 테이블
Create tablespace chul1999Datafile ‘d:\data\chul1999.dbf’ size 500m;
Create tablespace chul2000Datafile ‘e:\data\chul2000.dbf’ size 500m;
Create tablespace chul2001Datafile ‘f:\data\chul2001.dbf’ size 500m;
Create table jeon(idate date, no char(2), name v2(20), qty number)Partition By Range(idate)(Partition t1 values less than(200001) Tablespace chul1999, Partition t2 values less than(200101) Tablespace chul2000, Partition t3 values less than(MAXVALUE) Tablespace chul2001);
D:\data\chul1999.dbf
199911 1 tv tube 100……………………
Jeon
E:\data\chul12000.dbf
200001 2 power cable……………………
jeon
F:\data\chul12001.dbf
200101 3 case box……………………
jeon
Redo logfiles
SCN:80141 주종면 1001 주종면 110
102
2 주영현 1202 주영현 132
103Control files -1
Control files -2
Control files -3
다중 컨트롤 파일
Data files
Undo file
Temp file
System file
CKPT
Disk-1
Disk-2
Disk-3
컨트롤 파일 복사하기 (PFILE)컨트롤 파일 복사하기 (PFILE)
데이터베이스를 종료하십시오 .SQL> SHUTDOWN
원본 컨트롤 파일을 복사하십시오 .C:\> copy control01.ctl control04.ctl
INIT<DB 명 >.ORA 파일에 새로운 파일을 추가하십시오 .Control_files= (control01.ctl, , , control04.ctl)
데이터베이스를 다시 시작하십시오 .SQL> STARTUP
1
2
3
4
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
SQL> ALTER SYSTEM SET control_files =‘c:\oracle\oradata\ora90\control01.ctl’,‘c:\oracle\oradata\ora90\control02.ctl’,‘c:\oracle\oradata\ora90\control03.ctl’,‘c:\oracle\oradata\ora90\control04.ctl’ SCOPE =SPFILE;
SQL> SHUTDOWN
데이터베이스를 다시 시작하십시오 .SQL> STARTUP
1
2
3
4
원본 컨트롤 파일을 복사하십시오 .C:\> copy control01.ctl control04.ctl
컨트롤 파일 복사하기 (SPFILE)컨트롤 파일 복사하기 (SPFILE)
Redo logbuffer
Redo logfiles-1
Redo-Log BufferInstance
1 주종면 1001 주종면 110
1 주종면 1001 주종면 110
Redo logfiles-2
Redo logfiles-3
2 주영현 1102 주영현 121
3 홍경옥 1003 홍경옥 110
4 홍길동 1004 홍길동 110
5 유관순 1005 유관순 110
6 황진이 1006 황진이 110
7 윤봉길 1007 윤봉길 110
8 이황 1008 이횡 110
2 주영현 1102 주영현 121
3 홍경옥 1003 홍경옥 110
4 홍길동 1104 홍길동 121
5 유관순 1005 유관순 110
6 황진이 1106 황진이 121
7 윤봉길 1007 윤봉길 110
8 이황 1108 이황 121
LGWR ARCH
다중 리두로그 파일
Redo logfiles-1
1 주종면 1001 주종면 110
Redo logfiles-2
Redo logfiles-3
2 주영현 1102 주영현 121
3 홍경옥 1003 홍경옥 110
4 홍길동 1104 홍길동 121
5 유관순 1005 유관순 110
6 황진이 1106 황진이 121
7 윤봉길 1007 윤봉길 110
8 이황 1108 이황 121
Disk-1
Disk-2
C:\log1 D:\log1 E:\log1
F:\log1 G:\log1 H:\log1
UPDATE emp
SET sal=sal*1.1;
UPDATE emp
SET sal=sal*1.1;
%sqlplus scott/tiger%sqlplus scott/tiger
서버서버프로세스프로세스
체크포인트와 백업원리
Shared pool
Redo logbuffer
DBWR
Data files
서버서버프로세스프로세스
LGWR
3사용자사용자
프로세스프로세스
Database buffercache
SGA
Instance
Sql> commit
;
Sql> commit
;
1
5
1 주종면 1001 주종면 110
2 주영현 1202 주영현 132
7
EMP1 주종면 1102 주영현 132
4
Committed.Committed.
Committed.
Redo logfiles
SCN:80141 주종면 1001 주종면 110
102
2 주영현 1202 주영현 132
103
CKPT
8014
6
Control files
103
8014
8014
8014
1 주종면 1102 주영현 132
1 주종면 1002 주영현 120
2
SCN:8014 UPDATE empSET sal=sal*1.1WHERE empno=1
RBS01
Log_checkpoint_timeoutLog_checkpoint_intervalFast_start_io_targetFast_start_mttr_target
저장구조의 미러링 설계
Data Mirror
. Hardware Based RAID
- RAID (Redundant Arrays of Independent Disks) SYSTEM
. SoftWare Based RAID
- Logical Volume Manager (Unix, Linux, Window-NT/XP 등 )
- ORACLE 사 (Automatic Storage Management)
1) 자동 미러링
Create or replace trigger back_empAfter update or delete or insert on emp Begin Insert into backup_emp Values ( , , , , );End;
2) 수동 미러링
R A I D
RAID 의 특징
1) 1988 년 미국 버클리 대학의 David A. Patterson 의 논문에서 처음 발표되었다 .
2) 정보기술의 발달로 인해 저장장치의 소형화와 대용량화가 요구 되었고 시스템과 네트워크에 이어 저장장치의 빠른 처리속도가 요구되었다 .
3) 데이터의 분산 (Stripe) 와 복사 (Mirror) 기능을 기본적으로 제공한다 .
4) 시스템을 켠 상태에서 새로운 디스크를 추가할 수 있으며 , 장애가 발생 한 디스크를 다른 디스크로 교체할 수 있다 .
5) 데이터를 병렬로 읽고 쓸 수 있기 때문에 빠른 성능이 보장되며 데이터의 안정성을 기대할 수 있다 . (5 가지 유형의 RAID 종류 )
RAID 의 구조
Disk Controller Disk Controller Disk Controller
RAID Controller
1) HA-Solution
2) FS-Solution
RAID-1
D0
D3
D6
D9
DISK0
1
2
3
0 D0
D3
D6
D9
DISK1
D1
D4
D7
D10
DISK2
D1
D4
D7
D10
DISK3
D2
D5
D8
D11
DISK4
D2
D5
D8
D11
DISK5
1) 저장되는 모든 데이터를 백업 디스크에 저장하는 방법 (DISK-Mirroring)
2) 디스크에 장애가 발생하더라도 데이터의 유실이 발생하지 않는다 .
3) 저장 용량당 단가가 비싸다 .
WINDOW-NT 의 RAID-5
오라클 서버의 ASM
CREATE TABLESPACE sales
DATAFILE '+dgroup1' SIZE 200M AUTOEXTEND ON;
CREATE DISKGROUP dgroup1 NORMAL REDUNDANCY 2
FAILGROUP controller1 DISK '/devices/diska1', '/devices/diska2', '/devices/diska3', FAILGROUP controller2 DISK '/devices/diskb1', '/devices/diskb2', '/devices/diskb3‘;
Automatic Storage Management
사용자의 구조설계
사용자의 구조
Oracle DB
SCOTT.DEPT
t_sales
SALES.SLIP
SCOTT.BORDSCOTT.EMP
SCOTT.ITEM
t_account
SALES.ORD SALES.INV
SALES.PROD
Sqlplus scott/tiger
SQL> CREATE TABLE emp
( a NUMBER)
TABLESPACE t_sales;
SQL> CREATE TABLE item
( b NUMBER)
TABLESPACE t_account;
Sqlplus sales/sales123
SQL> CREATE TABLE ord
( a NUMBER)
TABLESPACE t_sales;
SQL> CREATE TABLE inv
( b NUMBER)
TABLESPACE t_account;
사용자의 구조설계Oracle DB
Create user salesIdentified by sales123;
Create user accountIdentified by acc123;
업무별로 사용자를 생성하는 경우
Create user misIdentified by mis123;
전체업무를 하나의 사용자로 생성하는 경우
SALES/SALES123
emp dept sal
sales_s sales_l
ACOUNT/ACC123
slip
account
Oracle DB
MIS/MIS123
s_emp s_dept a_slip
mis
노 - 아카이브와 아카이브 모드 3
노 - 아카이브 모드
Redo logbuffer
Redo logfiles-1
Redo-Logo Buffer
Instance
1 주종면 1001 주종면 110
1 주종면 1001 주종면 110
Redo logfiles-2
Redo logfiles-3
2 주영현 1102 주영현 121
3 홍경옥 1003 홍경옥 110
4 홍길동 1004 홍길동 110
5 유관순 1005 유관순 110
6 황진이 1006 황진이 110
7 윤봉길 1007 윤봉길 110
8 이황 1008 이횡 110
2 주영현 1102 주영현 121
3 홍경옥 1003 홍경옥 110
4 홍길동 1104 홍길동 121
5 유관순 1005 유관순 110
6 황진이 1106 황진이 121
7 윤봉길 1007 윤봉길 110
8 이황 1108 이황 121
LGWR
Disk-1
OffLine BackupOffLine Backup
Oracle 9i
Control File
Redo-Log File
Data File
Parameter File
SQL> connect sys/man as sysdba
SQL > shutdown
SQL > cd $ORACLE_HOME
SQL > copy *.ctl c:\backup\*.ctl
SQL > copy *.log c:\backup\*.log
SQL > copy *.dbf c:\backup\*.dbf
SQL > copy *.ora c:\/backup\*.ora
Oracle 8
1
2
Data files
Log files
Controlfiles
Parameterfiles
100
2001 년 6 월 30 일 Backup
Data files Log files
Controlfiles
Parameterfiles
201
2001 년 7 월 31 일 Backup
Oracle9i
Data files Log files
Controlfiles
Parameterfiles
302
ControlFiles-201
현재시점
Full DB Recovery(NoArchive)Full DB Recovery(NoArchive)
Oracle 9i
SQL> connect sys/man as sysdba
SQL> shutdown
SQL> cd $ORACLE_HOMESQL> copy *.ctl c:\backup\*.ctlSQL> copy *.log c:\backup\*.logSQL> copy *.dbf c:\backup\*.dbfSQL> copy *.ora c:\/backup\*.ora
Oracle 8
2001 년 6 월 10 일 12 시 2001 년 6 월 12 일 13 시
copy c:\backup\*.ctl *.ctl copy c:\backup\*.log *.log copy c:\backup\*.dbf *.dbf copy c:\backup\*.ora *.oraSQL> connect sys/man as sysdbaSQL> startup
1 2
아카이브 모드
Redo logbuffer
Redo logfiles-1
Redo-Logo Buffer
Instance
1 주종면 1001 주종면 110
1 주종면 1001 주종면 110
Redo logfiles-2
Redo logfiles-3
2 주영현 1102 주영현 121
3 홍경옥 1003 홍경옥 110
4 홍길동 1004 홍길동 110
5 유관순 1005 유관순 110
6 황진이 1006 황진이 110
7 윤봉길 1007 윤봉길 110
8 이황 1008 이횡 110
2 주영현 1102 주영현 121
3 홍경옥 1003 홍경옥 110
4 홍길동 1104 홍길동 121
5 유관순 1005 유관순 110
6 황진이 1106 황진이 121
7 윤봉길 1007 윤봉길 110
8 이황 1108 이황 121
LGWR
Redo logfiles-1
1 주종면 1001 주종면 110
2 주영현 1102 주영현 121
ARCH
Archivefiles-2
3 홍경옥 1003 홍경옥 110
4 홍길동 1104 홍길동 121
Archive files-3
5 유관순 1005 유관순 110
6 황진이 1106 황진이 121
Disk-1 Disk-2
* INIT<DB 명 >.ORA 파일에 다음 파라메터를 정의하십시오
LOG_ARCHIVE_START = TRUELOG_ARCHIVE_DEST = [archivefile 의 경로와 파일명 ]LOG_ARCHIVE_DEST_n = [archivefile 의 다른 경로와 파일명 ]LOG_ARCHIVE_FORMAT = [format type].[ 확장자 ]
DB_RECOVERY_FILE_DEST = ‘’
SQL> STARTUP MOUNT
SQL> ALTER DATABASE [ ARCHIVELOG | NOARCHIVELOG];
SQL> ALTER DATABASE OPEN;
SQL> ARCHIVE LOG LIST;
1
2
3
Archive Mode 설정
OFF-Line 백업을 이용한 완전복구
Full DB 복구Full DB 복구
Oracle 9i
SCN:95
SQL> shutdown
copy *.ctl c:\backup\*.ctlcopy *.log c:\/backup\*.logcopy *.dbf c:\/backup\*.dbfcopy *.ora c:\/backup\*.ora
2001 년 6 월 10 일 12 시 2001 년 6 월 12 일 13 시
copy c:\backup\users01.dbf users01.dbf
SQL> startup mountSQL> recover database;SQL> alter database open;
Oracle 9i
ARCH
ARC1(6/10)
ARC2(6/11)
ARC3(6/12)
LGWR
LOG1
LOG2
LOG3
del user01.dbf
SYSTEM01.DBF
SCN:100
UNDOTBS01.DBF
SCN:100
TEMP01.DBF
SCN:100
QUERY01.DBF
SCN:100
데이터 파일
CONTROL01.CTL
SCN:100
컨트롤 파일
REDO01.LOG
SCN:100
REDO02.LOG
SCN:100
REDO03.LOG
SCN:100
리두로그 파일
SYSTEM01.DBF
SCN:95
UNDOTBS01.DBF
SCN:95
TEMP01.DBF
SCN:95
QUERY01.DBF
SCN:95
데이터 파일
CONTROL01.CTL
SCN:95
컨트롤 파일
REDO01.LOG
SCN:95
REDO02.LOG
SCN:95
REDO03.LOG
SCN:95
리두로그 파일
2001 년 6 월 10 일 12 시 시점의 백업 데이터 2001 년 6 월 12 일 13 시 현재 시점의 데이터
USERS01.DBF
SCN:95
USERS01.DBF
SCN:95
USERS01.DBF
SCN:100
CONTROL.CTL
DB Name : ORA92SCN : 100Log-S/N : 57SYSTEM : C:\SYSTEM.DBF 100M ON-LINEUNDO : C:\UNDO01.DBF 300M ON-LINETEMP : C:\TEMP01.DBF 200M ON-LINEUSERS : C:\USERS01.DBF 500M OFF-LINEREDO1 : D:\REDO1.LOG 500K ON-LINEREDO2 : D:\REDO2.LOG 500K ON-LINE
Max Data Files : 1200MaxLog files : 10MaxLog Member : 5
Characterset : KO16KSC5601
Control Files
100
100
C:\SYSTEM.DBF
100
C:\TEMP01.DBF
100
C:\UNDO01.DBF
95
C:\USERS01.DBF
무결성의 검증무결성의 검증SQL> StartupInstance Started.Finxed SizeDataBuffer Cache 3000000Logo Buffer 8192Shared pool Buffer 3500000Database mounted.
ORA-01113: 9 파일이 매체 복구되어야 합니다 .
ORA-01110: 9 데이터 파일 : c:\users01.dbf
SYSTEM.DBF UNDO.DBF TEMP.DBF USERS01.DBF REDO1.LOG REDO2.LOGCONTROL.CTL
100 100 100 95 100 100100
ARC1.LOG ARC2.LOG ARC3.LOG
2001 년 6 월 10 일 12 시 Backup Data
6 월 10 일 12 시이후~ 6 월 10 일 밤 12 시까지
Archive
6 월 10 일 밤 12 시이후~ 6 월 11 일 밤 12 시까지
Archive
6 월 11 일 밤 12 시이후~ 6 월 12 일 문제싯점까지
Archive
Archive 의 적용Archive 의 적용
플래시 - 백 데이터베이스 4
메모리 (Instance)
SGA Shared pool
SMONDBWR LGWRCKPTPMON
파일
Control files
Data files Redo logfiles
사용자사용자프로세스프로세스
서버서버프로세스프로세스
PGA
플래시 - 백 데이터베이스플래시 - 백 데이터베이스
Flash-Back
DatabaseLogs
Data Buffer Data Buffer CacheCache Logo BufferLogo Buffer Large PoolLarge Pool
RVWR
ParameterFile
플래시 - 백 데이터베이스플래시 - 백 데이터베이스
2004/07/01 2004/07/02
현재 시점
2004/07/03
Data files Control files
SQL> FLASHBACK DATABASE
TO TIMESTAMP(SYSDATE – 1) ;
1
Flash-Back Database Logs
2004/07/01 FlashBack Logs
2004/07/02 FlashBack Logs
2004/07/03 FlashBack Logs
2
3
플래시 - 백 테이블플래시 - 백 테이블
SQL> FLASHBACK TABLE emp
TO TIMESTAMP
TO_TIMESTAMP(‘2004/07/03 19:20:43’)
1
Flash-Back Database Logs
2004/07/03 18:20:25 Logs
2004/07/03 19:20:43 Logs
2004/07/03 20:25:35 Logs
2
3
2004/07/03
18:20:25
2004/07/03
19:20:43
현재 시점
2004/07/03
20:25:35
Data files Control files
Update empSet sal = sal * 2;
Update empSet sal = sal * 3;
환경 설정환경 설정
* INIT<DB 명 >.ORA 파일에 다음 파라메터를 정의하십시오
DB_RECOVERY_FILE_DEST = ‘[ 경로 ]’
# LOG_ARCHIVE_START = TRUE
# LOG_ARCHIVE_DEST = [archivefile 의 경로와 파일명 ]
# LOG_ARCHIVE_DEST_n = [archivefile 의 다른 경로와 파일명 ]
# LOG_ARCHIVE_FORMAT = [format type].[ 확장자 ]
SQL> STARTUP MOUNT
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE FLASHBACK ON;
SQL> ALTER DATABASE OPEN;
1
2
플래시 - 백 기타기능플래시 - 백 기타기능
1) Flash-Back DROP
2) Flash-Back Row History
3) Flash-Back Transaction History
SQL> connect scott/tigerSQL> SELECT empno, ename, job FROM emp WHERE empno = 7900; EMPNO ENAME JOB ----------------------------------------- 7900 JAMES CLERK
SQL> SELECT systimestamp FROM dual;
SYSTIMESTAMP ------------------------------------------------------ 2002.03/25 23:58:13.000000 +09:00
SQL> DELETE FROM emp WHERE empno = 7900;SQL> COMMIT;
SQL> SELECT empno, ename, job FROM emp WHERE empno = 7900; 선택된 레코드가 없습니다 .SQL> connect system/manager
SQL> EXECUTE DBMS_FLASHBACK.ENABLE_AT_TIME(‘2002.03/25 23:58:13.000000 ‘);
SQL> SELECT empno, ename, job FROM scott.emp WHERE empno = 7900;
EMPNO ENAME JOB ----------------------------------------- 7900 JAMES CLERK
SQL> EXECUTE DBMS_FLASHBACK.DISABLE;
7900 사원정보를 확인하십시오 .
현재 시스템 시간을 확인해 두세요
7900 사원정보를 삭제하세요 .
COMMIT 까지 .. 큰일났네 !!(SCN 이 발생합니다 )
이궁 .. 없어졌네 !!
UNDO 세그멘트에서 이전 정보를 검색합니다 .
아 ~ 이 내용은 언두 세그멘트 내용입니다 .
플래쉬백 기능을 종료합니다 .
플래시 - 백 테이블 (V 9i)플래시 - 백 테이블 (V 9i)
PMONPMON
시간 : 2001/11/2 15:02:12
UNDOTBSTablespace
Map-Table
81012 Select ~~;,,,,,,,,,,81089 Delete ~~;,,,,,,,,,,
<81089> 7902 주종면 1000<81090>7456 주영현 2300,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Delete From empWhere empno = 7902;Commit;
Scn: 81089
1
2
시간 : 2001/11/2 18:30:34
Exec dbms_flashback.enable_at_time(‘01/11/2 15:02:12’)
Select * from emp Where empno = 7902;
Exec dbms_flashback.disable;
3
4
7902 주종면 10005
undo_management = autoundo_retention = 300
Init.ora
2001/11/2 15:02:12
Data Guard
5
Data GuardData Guard
Primary DB
ORA 10g
(Instance A)
StandBy DB
ORA 10g
(Instance B)
1) Fail-Over 전
Standby DB
ORA 10g
(Instance A)
Primary DB
ORA 10g
(Instance B)
2) Fail-Over 후
Data Guard 의 구성Data Guard 의 구성
Target DB StandBy DB
ORA 10g
ORCL
ORA 10g
ORCL1
ARCH
ARC36
SQL> alter database create standby conrolfile as ‘stnb.ctl’;SQL>alter system archive log current;
copy *.LOG \192.9.200.2\*.LOGcopy *.DBF \192.9.200.2\*.DBFcopy *.ORA \192.9.200.2\*.ORAcopy stnb.ctl \192.9.200.2\*.CTLcopy *.ARC \192.9.200.2\*.ARC
1
*.DBF*.LOG*.ORA
ARC36
2
SQL>startup nomount;
SQL>alter database mount standby database;
SQL>recover standby database;
SQL>alter database open;
3
Data GuardBroker Process
Data GuardBroker Process
실시간 적용실시간 적용
Target DB
ORA 10g
192.9.200.1
StandBy DB
ORA 10g
192.9.200.2
LGWR
Data GuardBroker Process
Data GuardBroker Process
OnlineRedo-Log ARCH
ArchiveRedo-Log
MRP
StandbyOnline
Redo-LogARCH
ArchiveRedo-Log
RFSSynchronous
실시간 적용
Fail Over
Listener1(Port : 1521)
Client
Listener2(port : 1522)
Node1(192.9.200.1)
Node2(192.9.200.2)
ORA816=(DESCRIPTION = (FAILOVER=on) (Load_Balance=on) (ADDRESS_LIST = (ADDRESS=(PROTOCOL=tcp)(HOST=192.9.200.1)(PORT=1521)) (ADDRESS=(PROTOCOL=tcp)(HOST=192.9.200.2)(PORT=1522)) ) (CONNECT_DATA = (SID = ORA90)) )
Tnsnames.ora
복구시간 산정 방법
복구 Time 의 산정방법복구 Time 의 산정방법
SYSTEM.DBF
RBS.DBF
TEMP.DBF
INSA.DBF
Files = 200 GB
…………….
…………….
…………….
…………….
REDO1.LOG
REDO2.LOG
ARC1.log
ARC2.log
.
.
.
ARC50.log
Archive = 5 GB(100Mx50 개 ) 전체 OnLine Backup 시간 : 3 시간
1 개 Datafile(4GB) Restore 시간 : 10 분
전체 Datafile(200GB) Restore 시간 : 4 시간
1 개 Archive-File 적용시간 : 5 분
1) 1 개 Datafile(4GB) 의 복구시간 = 10 분 + (5 분 x 50 개 ) = 260 분 (4 시간 20 분 )
2) 전체 Datafile 의 복구시간 = 240 분 + (5 분 x 50 개 ) = 490 분 (8 시간 20 분 )