650 likes | 1.06k Views
오라클 DB 장애와 복구. PLAN 정보기술 Consultant 주종면 jina6678@yahoo.co.kr 011-864-1858. < 주의 > 파일을 인쇄하실 때에는 “인쇄”에서 “흑백으로 인쇄” 를 클릭하셔야 파란 배경 없이 깨끗이 인쇄가 됩니다. - 목 차 -. 1. 오라클 서버의 구조와 복구 원리 2. 오라클 DB 의 안전한 구조설계 3. 노 - 아카이브와 아카이브 모드 4. 플래시 - 백 데이터베이스 5. 데이터 가드 6. 장애복구 시간의 산정. 1.
E N D
오라클 DB 장애와 복구 PLAN 정보기술 Consultant 주종면 jina6678@yahoo.co.kr 011-864-1858 <주의>파일을 인쇄하실 때에는 “인쇄”에서 “흑백으로 인쇄” 를 클릭하셔야 파란 배경 없이 깨끗이 인쇄가 됩니다.
- 목 차 - 1. 오라클 서버의 구조와 복구 원리 2. 오라클 DB의 안전한 구조설계 3. 노-아카이브와 아카이브 모드 4. 플래시-백 데이터베이스 5. 데이터 가드 6. 장애복구 시간의 산정
1 오라클 서버의 구조와 복구원리
Control files Flash-Back Database Logs Parameter File Archive files Archive files Redo logfiles Data files 오라클 서버의 구조 INSTANCE MMAN RECO RFS MRP ORBn RBAL MMON Dnnn Snnn SGA Shared pool Large Pool Stream Pool Data Buffer Cache 서버 프로세스 Java Pool Log Buffer PGA 사용자 프로세스 SMON LGWR RVWR ARCH PMON DBWR CKPT 파일
1 Instance SGA Shared pool Librarycache 서버 프로세스 4 Database buffercache Redo logbuffer Datadictionarycache PGA 3 Control files Data files Redo logfiles 2 Database Select문의 처리 . 구문분석(Parse) . 실행(Execute) SELECT * FROM emp ORDER BY ename; . 인출(Fetch) 1주종면부산 2주영현서울 사용자 프로세스 . 접속일자 . 사용자/ 암호 %sqlplus scott/tiger EMP 1주종면부산 2주영현서울 1> SELECT * 2> FROM emp 3> ORDER BY ename;
1주종면110 1주종면100 3 Instance SGA 4 Shared pool Librarycache Database buffercache Redo logbuffer Datadictionarycache 2 Control files Data files Redo logfiles 1 Database DML문의 처리 . 구문분석(Parse) . 실행(Execute) UPDATE emp SET sal=sal*1.1 WHERE empno=1 Serverprocess 1주종면100 1주종면100 1주종면110 DBA_TABLES 사용자 프로세스 Rollback-block . 접속일자 . 사용자/ 암호 %sqlplus scott/tiger EMP 1주종면100 2주영현120 UPDATE emp SET sal=sal*1.1 WHERE empno=1; RBS01
1주종면110 2주영현132 1주종면100 2주영현120 2 SCN:8014 4 Committed. 3 7 6 5 8014 8014 Control files 8014 102 103 Data files 103 EMP 1주종면110 2주영현132 SCN:8014 1주종면100 1주종면110 2주영현120 2주영현132 8014 Committed. COMMIT문 처리 Instance SGA Shared pool Redo logbuffer UPDATE emp SET sal=sal*1.1 WHERE empno=1 Database buffercache 1주종면100 1주종면110 서버 프로세스 2주영현120 2주영현132 DBWR CKPT LGWR 1 사용자 프로세스 Redo logfiles Sql> commit; RBS01
Init.ora db_name=ORA9 Shared_pool_size=1000 Log_buffer=8192 메모리(Instance) 1) Init.ora를 읽는다. 2) SGA 영역을 만든다. 3) Background 프로세스를 만든다. 4) Alert_<DB명>.log에 정보를 변경한다. SGA Shared pool Data Buffer Cache Log Buffer Large Pool 1 SMON DBWR LGWR PMON CKPT 3 1)Control 파일의 정보를 이용하여 파일들의 무결성을 확인한다. 2)일반 사용자가 데이터베이스에 접속할 수 있도록 허용한다. 2 1) control.ctl(컨트롤파일)을 읽는다. 2) init.ora와 Control 파일 정보를 읽는다. 3) db_name 값이 일치하는지 검사한다. 4) 상태정보를 읽는다. C:\SYSTEM.DBF D:\INSA.DBF E:\RBS.DBF Control.ctl db_name=ORA9 C:\SYSTEM.DBF D:\INSA.DBF E:\RBS.DBF 시작과 종료 SQL> Startup Instance Started. Finxed Size DataBuffer Cache 3000000 Log Buffer 8192 Shared pool Buffer 3500000 Database mounted. Database opened.
데이터 파일 컨트롤 파일 리두로그 파일 파라메터 파일 INIT.ORA SCN:100 SCN:100 SCN:100 SCN:100 SCN:100 SCN:100 SCN:100 SCN:100 SCN:100 SCN:100 SCN:100 UNDOTBS01.DBF CONTROL02.CTL CONTROL03.CTL CONTROL01.CTL SYSTEM01.DBF QUERY01.DBF USERS01.DBF REDO01.LOG REDO02.LOG REDO03.LOG TEMP01.DBF 데이터베이스의 구조분석
100 CONTROL.CTL DB Name : ORA92 SCN : 100 Log-S/N : 57 SYSTEM : C:\SYSTEM.DBF 100M ON-LINE UNDO : C:\UNDO01.DBF 300M ON-LINE TEMP : C:\TEMP01.DBF 200M ON-LINE USERS : C:\USERS01.DBF 500M OFF-LINE REDO1 : D:\REDO1.LOG 500K ON-LINE REDO2 : D:\REDO2.LOG 500K ON-LINE Max Data Files : 1200 MaxLog files : 10 MaxLog Member : 5 Characterset : KO16KSC5601 100 C:\USERS01.DBF 100 C:\SYSTEM.DBF 100 C:\UNDO01.DBF 100 C:\TEMP01.DBF Control Files 무결성의 검증 SQL> Startup Instance Started. Finxed Size DataBuffer Cache 3000000 Logo Buffer 8192 Shared pool Buffer 3500000 Database mounted. ORA-01157 데이터 9 파일을 식별 또는 잠금할 수 없습니다 ORA-01110 : 9 데이터 파일: c:\users01.dbf
System Change Number 2001년 6월30일 Backup 2001년 7월31일 Backup 100 101 Parameter files Parameter files Parameter files Data files Data files Data files Control Files-101 Log files Log files Log files Control files Control files Control files 1 2 3 현재시점 102 Oracle9i
Files 구조 V$CONTROLFILE V$CONTROLFILE_RECORD_SECTION V$DATABASE CREATE DATABASE ora90 LOGFILE 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 100m UNDO TABLESPACE undo DATAFILE ‘c:\oracle\oradata\ora90\undo01.dbf’ size 50m DEFAULT TEMPORARY TABLESPACE temp TEMPFILE ‘c:\oracle\oradata\ora90\temp01.dbf’ size 30m EXTENT MANAGEMENT LOCAL UNIFORM size 1m CHARACTER SET ko16ksc5601 NATIONAL CHARACTER SET al16utf16 SET TIME_ZONE = ‘Korea/Seoul’; Control Files Redo-Log Files Parameter File Data Files 80014 80014 80014 CONTROL.CTL REDO1.LOG INIT.ORA SYSTEM.DBF ,,,,,, 1주종면100 1주종면110 DB Name : ORA9 SCN : 800014 Log-S/N : 257 SYSTEM : C:\SYSTEM.DBF 100M ON-LINE UNDO : C:\UNDO.DBF 300M ON-LINE TEMP : C:\TEMP.DBF 200M ON-LINE INSA : C:\INSA.DBF 500M ON-LINE REDO1 : D:\REDO1.LOG 500K ON-LINE REDO2 : D:\REDO2.LOG 500K ON-LINE Max Data Files : 1200 MaxLog files : 10 MaxLog Member : 5 Characterset : KO16KSC5601 DB_NAME=ORA8 256 80014 UNDO.DBF 80014 REDO2.LOG ,,,,, 2주영현120 2주영현132 80014 257 TEMP.DBF ,,,,, 80014 INSA.DBF ,,,,,
백업과 복구방법 Backup Method Recovery Method NoArchive Mode Physical (Archive, NoArchive) OffLine Backup (Close, Cold Backup) Full DB Recovery Archive Mode Physical (Archive) Complete Recovery 1) Full DB 2) Tablespace 3) Datafile OnLine Backup (Open, Hot Backup) Physical (Archive, NoArchive) RMAN Utility InComplete Recovery 1) Cancel Based 2) Time Based 3) Change Based 4) 컨트롤 파일 및 Redo-Log의 유실 Logical Mode Export/Import Utility
2 오라클 DB의 안전한 구조설계
논-파티션 테이블 (논리적 테이블) 파티션 테이블 (물리적 테이블) 수직 파티션 테이블 범위 파티션 테이블 수평 파티션 테이블 해시 파티션 테이블 리스트 파티션 테이블 논-클러스터 테이블 (논리적 테이블) 클러스터 테이블 (물리적 테이블) 인덱스 클러스터 테이블 해시 클러스터 테이블 테이블의 유형 파티션 유무 클러스터 유무
D:\data\insa1.dbf Create tablespace chul Datafile ‘d:\data\chul.dbf’ size 500m; Create table jeon(idate date, no char(2), name v2(20), qty number) Tablespace chul; jeon 199912 1 tv tube 100 200001 2 power cable …………………… Create tablespace chul1999 Datafile ‘d:\data\chul1999.dbf’ size 500m; Create tablespace chul2000 Datafile ‘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_chul As select * from chul1999 Union all select * from chul2000; D:\data\chul1999.dbf jeon1999 199912 1 tv tube 100 …………………… E:\data\chul12000.dbf jeon2000 200001 2 power cable …………………… 논-파티션 테이블 & 파티션 뷰
파티션 테이블 D:\data\chul1999.dbf Create tablespace chul1999 Datafile ‘d:\data\chul1999.dbf’ size 500m; Create tablespace chul2000 Datafile ‘e:\data\chul2000.dbf’ size 500m; Create tablespace chul2001 Datafile ‘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); Jeon 199911 1 tv tube 100 …………………… E:\data\chul12000.dbf jeon 200001 2 power cable …………………… F:\data\chul12001.dbf jeon 200101 3 case box ……………………
Redo logfiles 102 103 System file Data files Temp file Undo file Control files -3 Control files -2 Control files -1 SCN:8014 1주종면100 1주종면110 2주영현120 2주영현132 다중 컨트롤 파일 CKPT Disk-1 Disk-2 Disk-3
컨트롤 파일 복사하기(PFILE) 데이터베이스를 종료하십시오. SQL> SHUTDOWN 1 원본 컨트롤 파일을 복사하십시오. C:\> copy control01.ctl control04.ctl 2 INIT<DB명>.ORA 파일에 새로운 파일을 추가하십시오. Control_files= (control01.ctl, , , control04.ctl) 3 데이터베이스를 다시 시작하십시오. SQL> STARTUP 4 ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
컨트롤 파일 복사하기(SPFILE) 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; 1 SQL> SHUTDOWN 2 원본 컨트롤 파일을 복사하십시오. C:\> copy control01.ctl control04.ctl 3 데이터베이스를 다시 시작하십시오. SQL> STARTUP 4
LGWR Redo logfiles-1 Redo logfiles-3 Redo logfiles-2 Redo logfiles-2 Redo logfiles-3 Redo logfiles-1 다중 리두로그 파일 Instance Redo-Log Buffer Redo logbuffer 2주영현110 2주영현121 4홍길동100 4홍길동110 6황진이100 6황진이110 8이황100 8이횡110 서버 프로세스 1주종면100 1주종면110 3홍경옥100 3홍경옥110 5유관순100 5유관순110 7윤봉길100 7윤봉길110 %sqlplus scott/tiger ARCH UPDATE emp SET sal=sal*1.1; C:\log1 D:\log1 E:\log1 7윤봉길100 7윤봉길110 1주종면100 1주종면110 3홍경옥100 3홍경옥110 5유관순100 5유관순110 2주영현110 2주영현121 8이황110 8이황121 4홍길동110 4홍길동121 6황진이110 6황진이121 Disk-1 F:\log1 G:\log1 H:\log1 7윤봉길100 7윤봉길110 1주종면100 1주종면110 3홍경옥100 3홍경옥110 5유관순100 5유관순110 2주영현110 2주영현121 8이황110 8이황121 4홍길동110 4홍길동121 6황진이110 6황진이121 Disk-2
1주종면110 2주영현132 1주종면100 2주영현120 2 SCN:8014 4 Committed. 3 7 6 5 8014 8014 Control files 8014 102 103 Data files 103 EMP 1주종면110 2주영현132 SCN:8014 1주종면100 1주종면110 2주영현120 2주영현132 8014 Committed. 체크포인트와 백업원리 Instance Log_checkpoint_timeout Log_checkpoint_interval Fast_start_io_target Fast_start_mttr_target SGA Shared pool Redo logbuffer UPDATE emp SET sal=sal*1.1 WHERE empno=1 Database buffercache 1주종면100 1주종면110 서버 프로세스 2주영현120 2주영현132 DBWR CKPT LGWR 1 사용자 프로세스 Redo logfiles Sql> commit; RBS01
1) 자동 미러링 . 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) 2) 수동 미러링 Create or replace trigger back_emp After update or delete or insert on emp Begin Insert into backup_emp Values ( , , , , ); End; Data Mirror
RAID의 특징 1) 1988년 미국 버클리 대학의 David A. Patterson의 논문에서 처음 발표되었다. 2) 정보기술의 발달로 인해 저장장치의 소형화와 대용량화가 요구 되었고 시스템과 네트워크에 이어 저장장치의 빠른 처리속도가 요구되었다. 3) 데이터의 분산(Stripe)와 복사(Mirror) 기능을 기본적으로 제공한다. 4) 시스템을 켠 상태에서 새로운 디스크를 추가할 수 있으며, 장애가 발생 한 디스크를 다른 디스크로 교체할 수 있다. 5) 데이터를 병렬로 읽고 쓸 수 있기 때문에 빠른 성능이 보장되며 데이터의 안정성을 기대할 수 있다. (5가지 유형의 RAID 종류)
RAID Controller Disk Controller Disk Controller Disk Controller RAID의 구조 1) HA-Solution 2) FS-Solution
DISK0 D0 D3 D6 D9 RAID-1 DISK4 DISK5 DISK1 DISK2 DISK3 D2 D2 D0 D1 D1 0 D5 D5 D3 D4 D4 1 D8 D8 D6 D7 D7 2 D11 D11 D9 D10 D10 3 1) 저장되는 모든 데이터를 백업 디스크에 저장하는 방법(DISK-Mirroring) 2) 디스크에 장애가 발생하더라도데이터의 유실이 발생하지 않는다. 3) 저장 용량당 단가가비싸다.
Automatic Storage Management CREATE DISKGROUP dgroup1NORMALREDUNDANCY 2 FAILGROUP controller1 DISK '/devices/diska1', '/devices/diska2', '/devices/diska3', FAILGROUP controller2 DISK '/devices/diskb1', '/devices/diskb2', '/devices/diskb3‘; CREATE TABLESPACEsales DATAFILE'+dgroup1'SIZE 200M AUTOEXTEND ON;
SCOTT.EMP SALES.ORD SALES.INV SCOTT.ITEM 사용자의 구조 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 t_sales t_account SCOTT.BORD SCOTT.DEPT SALES.SLIP SALES.PROD
sales_s sales_l account mis emp dept sal slip s_emp s_dept a_slip 업무별로 사용자를 생성하는 경우 전체업무를 하나의 사용자로 생성하는 경우 Create user sales Identified by sales123; Create user account Identified by acc123; Create user mis Identified by mis123; 사용자의 구조설계 Oracle DB Oracle DB SALES/SALES123 ACOUNT/ACC123 MIS/MIS123
3 노-아카이브와 아카이브 모드
노-아카이브 모드 LGWR Redo logfiles-1 Redo logfiles-2 Redo logfiles-3 Instance Redo-Logo Buffer Redo logbuffer 2주영현110 2주영현121 4홍길동100 4홍길동110 6황진이100 6황진이110 8이황100 8이횡110 1주종면100 1주종면110 3홍경옥100 3홍경옥110 5유관순100 5유관순110 7윤봉길100 7윤봉길110 1주종면100 1주종면110 7윤봉길100 7윤봉길110 3홍경옥100 3홍경옥110 5유관순100 5유관순110 Disk-1 2주영현110 2주영현121 8이황110 8이황121 4홍길동110 4홍길동121 6황진이110 6황진이121
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 OffLine Backup Oracle 9i Oracle 8 Control File 1 Redo-Log File 2 Data File Parameter File
2001년 6월30일 Backup 2001년 7월31일 Backup 100 201 Parameter files Parameter files Parameter files Data files Data files Data files Control Files-201 Log files Log files Log files Control files Control files Control files 현재시점 302 Oracle9i
Full DB Recovery(NoArchive) 2001년 6월 10일 12시 2001년 6월 12일 13시 Oracle 9i Oracle 8 1 2 copy c:\backup\*.ctl *.ctl copy c:\backup\*.log *.log copy c:\backup\*.dbf *.dbf copy c:\backup\*.ora *.ora SQL> connect sys/man as sysdba SQL> startup 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
아카이브 모드 1주종면100 1주종면110 2주영현110 2주영현121 3홍경옥100 3홍경옥110 4홍길동110 4홍길동121 LGWR 5유관순100 5유관순110 6황진이110 6황진이121 Redo logfiles-3 Redo logfiles-2 Redo logfiles-1 Redo logfiles-1 Archive files-3 Archivefiles-2 Instance Redo-Logo Buffer Redo logbuffer 2주영현110 2주영현121 4홍길동100 4홍길동110 6황진이100 6황진이110 8이황100 8이횡110 1주종면100 1주종면110 3홍경옥100 3홍경옥110 5유관순100 5유관순110 7윤봉길100 7윤봉길110 ARCH 1주종면100 1주종면110 7윤봉길100 7윤봉길110 3홍경옥100 3홍경옥110 5유관순100 5유관순110 Disk-2 Disk-1 2주영현110 2주영현121 8이황110 8이황121 4홍길동110 4홍길동121 6황진이110 6황진이121
Archive Mode 설정 * INIT<DB명>.ORA 파일에 다음 파라메터를 정의하십시오 LOG_ARCHIVE_START = TRUE LOG_ARCHIVE_DEST = [archivefile의 경로와 파일명] LOG_ARCHIVE_DEST_n = [archivefile의 다른 경로와 파일명] LOG_ARCHIVE_FORMAT = [format type].[확장자] DB_RECOVERY_FILE_DEST = ‘’ 1 SQL> STARTUP MOUNT SQL> ALTER DATABASE [ ARCHIVELOG | NOARCHIVELOG]; SQL> ALTER DATABASE OPEN; 2 SQL> ARCHIVE LOG LIST; 3
OFF-Line 백업을 이용한 완전복구
Oracle 9i del user01.dbf Full DB 복구 2001년 6월 10일 12시 2001년 6월 12일 13시 Oracle 9i SCN:95 LGWR ARCH SQL> shutdown copy *.ctl c:\backup\*.ctl copy *.log c:\/backup\*.log copy *.dbf c:\/backup\*.dbf copy *.ora c:\/backup\*.ora LOG1 ARC1(6/10) copy c:\backup\users01.dbf users01.dbf SQL> startup mount SQL> recover database; SQL> alter database open; LOG2 ARC2(6/11) LOG3 ARC3(6/12)
컨트롤 파일 컨트롤 파일 SCN:100 SCN:100 SCN:100 SCN:100 SCN:100 SCN:100 SCN:100 SCN:100 SCN:100 SCN:95 SCN:95 SCN:95 SCN:95 SCN:95 SCN:95 SCN:95 SCN:95 SCN:95 SCN:95 UNDOTBS01.DBF UNDOTBS01.DBF CONTROL01.CTL CONTROL01.CTL SYSTEM01.DBF SYSTEM01.DBF QUERY01.DBF QUERY01.DBF USERS01.DBF USERS01.DBF USERS01.DBF REDO03.LOG REDO01.LOG REDO02.LOG REDO01.LOG REDO02.LOG REDO03.LOG TEMP01.DBF TEMP01.DBF 리두로그 파일 리두로그 파일 2001년 6월 10일 12시 시점의 백업 데이터 2001년 6월 12일 13시 현재 시점의 데이터 데이터 파일 데이터 파일
ORA-01113: 9 파일이 매체 복구되어야 합니다. ORA-01110: 9 데이터 파일: c:\users01.dbf 100 CONTROL.CTL DB Name : ORA92 SCN : 100 Log-S/N : 57 SYSTEM : C:\SYSTEM.DBF 100M ON-LINE UNDO : C:\UNDO01.DBF 300M ON-LINE TEMP : C:\TEMP01.DBF 200M ON-LINE USERS : C:\USERS01.DBF 500M OFF-LINE REDO1 : D:\REDO1.LOG 500K ON-LINE REDO2 : D:\REDO2.LOG 500K ON-LINE Max Data Files : 1200 MaxLog files : 10 MaxLog Member : 5 Characterset : KO16KSC5601 95 C:\USERS01.DBF 100 C:\SYSTEM.DBF 100 C:\UNDO01.DBF 100 C:\TEMP01.DBF Control Files 무결성의 검증 SQL> Startup Instance Started. Finxed Size DataBuffer Cache 3000000 Logo Buffer 8192 Shared pool Buffer 3500000 Database mounted.
100 100 100 95 100 100 100 Archive의 적용 2001년 6월 10일 12시 Backup Data REDO1.LOG REDO2.LOG SYSTEM.DBF UNDO.DBF TEMP.DBF USERS01.DBF CONTROL.CTL 6월10일 12시이후 ~ 6월10일 밤12시까지 Archive 6월10일 밤12시이후 ~ 6월11일 밤12시까지 Archive 6월11일 밤12시이후 ~ 6월12일 문제싯점까지 Archive ARC3.LOG ARC1.LOG ARC2.LOG
4 플래시-백 데이터베이스
Control files Flash-Back Database Logs Parameter File Redo logfiles Data files 플래시-백 데이터베이스 메모리(Instance) SGA Shared pool Data Buffer Cache Logo Buffer Large Pool 서버 프로세스 PGA 사용자 프로세스 SMON LGWR RVWR PMON DBWR CKPT 파일
2 3 현재 시점 2004/07/03 2004/07/02 2004/07/01 Control files Flash-Back Database Logs 2004/07/01 FlashBack Logs 1 Data files 2004/07/02 FlashBack Logs SQL> FLASHBACK DATABASE TO TIMESTAMP(SYSDATE – 1) ; 2004/07/03 FlashBack Logs 플래시-백 데이터베이스
2 3 현재 시점 2004/07/03 20:25:35 2004/07/03 19:20:43 2004/07/03 18:20:25 Update emp Set sal = sal * 2; Update emp Set sal = sal * 3; Control files Flash-Back Database Logs 2004/07/03 18:20:25 Logs 1 Data files 2004/07/03 19:20:43 Logs SQL> FLASHBACK TABLE emp TO TIMESTAMP TO_TIMESTAMP(‘2004/07/03 19:20:43’) 2004/07/03 20:25:35 Logs 플래시-백 테이블