1. flashback database 기능
- 전체 데이타베이스 복구
- 특정 시점 데이타베이스 복구
- flashback database가 활성화 되었을 경우 fast recovery area(DB_RECOVERY_FILE_DEST parameter) 에 flashback log를 생성, 이 flashback log는 특정 시간으로 데이타베이스를 flash back 하는데 사용된다.
- flashback table은 undo_tablespace를 사용하는 반면 flashback database는 flashback log 사용
2. flashback database 제약
- currupt data file, 갑작스런 데이타 파일 삭제로 인한 복구는 불가능 ( RMAN을 이용하여 복구)
- 운영 DB보다는 개발 DB환경에 더 적절
3. flashback database 활성상태 조회
SQL> select flashback_on from v$database ; FLASHBACK_ON ------------------ NO => NO 일경우 비활성화, YES 일 경우 활성화 상태 SQL> |
4. flashback database 활성화
SQL> shutdown immediate ; => flashback database를 활성화를 위해서는 데이타베이스 재시작 필요 SQL> startup mount ; => Mount 모드로 시작 SQL> archive log list ; => ARCHIVELOG 모드 확인 SQL> alter database archivelog ; => ARCHIVELOG 모드에서만 flashback database 사용 SQL> alter system set DB_FLASHBACK_RETENTION_TARGET = 2880 ; => 48시간(단위 분), defualt 1440 SQL> alter system set DB_RECOVERY_FILE_DEST_SIZE = 20G ; SQL> alter system set DB_RECOVERY_FILE_DEST=+FRA ; 예) ASM상의 FRA 이름의 디스크 구룹 지정 - DB_RECOVERY_FILE_DEST는 디렉토리, ASM의 디스크 그룹 지정 가능 - rac 환경에서는 ASM의 FRA(Fast Recovery Area), 또는 cluster 파일시스템상에 위치 해야함 SQL> alter system set UNDO_RETENTION = 86400 ; => 24시간(단위 초) SQL> alter database FLASHBACK ON ; => flashback 활성화 SQL> alter database open ; => 데이타베이스 오픈(open) SQL> select flashback_on from v$database ; => flashback database 상태 조회 |
5. SCN을 이용한 flashback database 복구 예
SQL> conn / as sysdba SQL> select * from t1 ; |
|
6. TO_TIMESTAMP을 이용한 flashback database 복구 예
- TO_TIMESTAMP 시간까지 복구
SQL> conn hoya/******* 연결되었습니다. SQL> select * from t1 ; AGE ---------- 1 2 SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual ; TO_CHAR(SYSDATE,'YY ------------------- 2019-12-17 10:27:28 SQL> truncate table t1 ; => 장애 발생 테이블이 잘렸습니다. SQL> select * from t1 ; 선택된 레코드가 없습니다. SQL> conn / as sysdba 연결되었습니다. SQL> shutdown immediate 데이터베이스가 닫혔습니다. 데이타베이스가 마운트 해제되었습니다. ORACLE 인스턴스가 종료되었습니다. SQL> startup mount ; ORACLE 인스턴스가 시작되었습니다. Total System Global Area 3423965184 bytes Fixed Size 2215824 bytes Variable Size 1862271088 bytes Database Buffers 1543503872 bytes Redo Buffers 15974400 bytes 데이터베이스가 마운트 되었습니다. SQL> flashback database to timestamp TO_TIMESTAMP('2019-12-17 10:27:28','YYYY-MM-DD HH24:MI:SS') ; 플래쉬백이 완료되었습니다. SQL> alter database open resetlogs ; 데이타베이스가 변경되었습니다. SQL> conn hoya/******* 연결되었습니다. SQL> select * from t1 ; AGE ---------- 1 2 SQL> |
7. 보장된 복원지점으로 복구 예
SQL> conn hoya/******* 연결되었습니다. SQL> select * from t1 ; AGE ---------- 1 2 SQL> conn / as sysdba => sysdba 권한으로 접속 연결되었습니다. SQL> select * from v$restore_point ; 선택된 레코드가 없습니다. SQL> create restore point INIT_DB guarantee flashback database ; => 보장된 복원지점 생성 복원 지점이 생성되었습니다. SQL> select * from v$restore_point ; SCN DATABASE_INCARNATION# GUA STORAGE_SIZE ---------- --------------------- --- ------------ TIME --------------------------------------------------------------------------- RESTORE_POINT_TIME PRE --------------------------------------------------------------------------- --- NAME -------------------------------------------------------------------------------- 1147029 5 YES 15941632 19/12/17 10:51:44.000000000 YES INIT_DB SQL> conn hoya/******* 연결되었습니다. SQL> truncate table t1 ; => 장애 발생 테이블이 잘렸습니다. SQL> select * from t1 ; 선택된 레코드가 없습니다. SQL> conn / as sysdba => sysdba 권한으로 접속 연결되었습니다. SQL> shutdown immediate => 데이타베이스 종료 데이터베이스가 닫혔습니다. 데이타베이스가 마운트 해제되었습니다. ORACLE 인스턴스가 종료되었습니다 SQL> startup mount => mount mode로 데이타베이스 시작 ORACLE 인스턴스가 시작되었습니다. Total System Global Area 3423965184 bytes Fixed Size 2215824 bytes Variable Size 1862271088 bytes Database Buffers 1543503872 bytes Redo Buffers 15974400 bytes 데이터베이스가 마운트 되었습니다.. SQL> select * from v$restore_point ; SCN DATABASE_INCARNATION# GUA STORAGE_SIZE ---------- --------------------- --- ------------ TIME --------------------------------------------------------------------------- RESTORE_POINT_TIME PRE --------------------------------------------------------------------------- --- NAME -------------------------------------------------------------------------------- 1147029 5 YES 15941632 19/12/17 10:51:44.000000000 YES INIT_DB SQL> flashback database to restore point INIT_DB ; => 보장된 복원지점으로 복구 플래쉬백이 완료되었습니다. SQL> alter database open resetlogs ; 데이타베이스가 변경되었습니다. SQL> conn hoya/******* 연결되었습니다. SQL> select * from t1 ; AGE ---------- 1 2 SQL> |
'DBMS > ORACLE' 카테고리의 다른 글
FLASHBACK TABLE (0) | 2019.12.18 |
---|---|
Fast Recovery Area 이란 (0) | 2019.12.16 |
RECYCLEBIN(휴지통) 관리 (0) | 2019.12.15 |
오라클 권한(Privilege)과 Role(역할) 조회/생성/부여/회수 (0) | 2019.12.14 |
오라클 객체 권한 조회/추가/회수 (0) | 2019.12.14 |