select * from v$option;
현재 데이터베이스에 활성화된 옵션 정보 제공
여기서 false 라고 나와있는 부분: 별도 설치 필요,
이 중에서 Automatic Storage Management FALSE 얘를 설치해야 RAC 를 사용할 수 있다.
하지만 True 라고 되어있는 것들은 오라클을 Enterprise 로 설치하면 기본적으로 내장되어 있는 것들이다.
★ 플래시백 데이터 아카이브 Flashback Data Archive
- 플래시백 기능의 목적 : 불완전 복구를 하지 않고도 이전 값을 보는 것
- 플래시백 데이터 아카이브: (정책상 필요없는 아카이브를 지우지 않고) 일정 기간 동안 기록을 남겨두는 기록 저장소
- FDBA 라는 백그라운드 프로세스를 사용하여 데이터를 자동으로 추적하고 기록한다.
(무조건 하는 것이 아님, flashback data archive 가 활성화되어 있는 테이블 한정으로 추적 + 기록)
- 사용하려면 먼저 기록이 저장될 저장소 (테이블스페이스) 를 만들어야 한다.
1. 저장소 (테이블스페이스) 만들기
SYS@ora11g>
create tablespace fda_tbs datafile '/u01/app/oracle/oradata/ora11g/fda_tbs01.dbf' size 10m autoextend on next 1m;
(DBA 는 이 저장소 안에 남은 저장공간이 충분한지도 매일 체크해야 한다.)
2. 새로 만든 저장소에 플래시백 데이터 아카이브 생성하기
SYS@ora11g> create flashback archive fda1 tablespace fda_tbs quota 10m retention 1 year;
fda_tbs 라는 테이블스페이스에 fda1 이라는 이름으로
쿼타값 10m, 보관 기간 1년짜리 플래시백 데이터 아카이브 만들기
(1년이 지나면 저 아카이브는 자동으로 purge 된다)
select flashback_archive_name, create_time, status from dba_flashback_archive;
플래시백 아카이브 목록 (이름, 생성 시간, 상태) 보기
select * from dba_flashback_archive;
플래시백 데이터 아카이브 정보 보기
3. 샘플 테이블 (관찰하고 추적해야 할 테이블) 만들기
SYS@ora11g> create table hr.emp_fda as select * from hr.employees;
테이블 활성화
SYS@ora11g> alter table hr.emp_fda flashback archive fda1;
hr.emp_fda 라는 테이블을 fda1 에 저장하면
저 테이블의 변경 사항 내용이 플래시백 데이터 아카이브 fda1 에 저장된다.
select * from dba_flashback_archive_tables;
플래시백 데이터 아카이브에 속하는 테이블에 대한 정보 조회하기
4. 샘플 테이블에 변경 작업하기
SYS@ora11g>
select salary from hr.emp_fda where department_id=20;
SALARY
----------
15730
7260
20번 부서 사원들의 월급 조회하기
SYS@ora11g> update hr.emp_fda set salary = 3000 where department_id=20;
2 rows updated.
20번 부서 사원들의 월급 3000으로 업데이트
SYS@ora11g> commit;
커밋
SYS@ora11g> select salary from hr.emp_fda where department_id=20;
SALARY
----------
3000
3000
확인해보면: 20번 부서 사원들의 월급이 몽땅 3000으로 바뀌어 있다.
SYS@ora11g>
select salary from hr.emp_fda as of timestamp (systimestamp - interval '3' minute) where department_id = 20;
SALARY
-----------------
15730
7260
현재로부터 3분 전의 데이터 보기
굳이 플래시백 데이터 아카이브가 없어도
언두 리텐션이 보장하는 기간 동안에는 as of timestamp 해서 이전 값을 볼 수 있다.
하지만 이 데이터는 언두에서 찾는 것이 아니라 플래시백 데이터 아카이브에서 찾는다.
(플래시백 데이터 아카이브가 활성화되어 있는 경우 한정)
하지만 as of 명령어를 써서 예전 데이터를 보는 것은 똑같다.
SYS@ora11g> ! ps -ef | grep fbda
oracle 14533 1 0 09:59 ? 00:00:00 ora_fbda_ora11g
oracle 14948 14166 0 10:13 pts/2 00:00:00 /bin/bash -c ps -ef | grep fbda
oracle 14950 14948 0 10:13 pts/2 00:00:00 grep fbda
fda 프로세스 확인
SYS@ora11g> ! ps -ef | grep fbda | grep -v grep
oracle 14533 1 0 09:59 ? 00:00:00 ora_fbda_ora11g
다른 프로세스 말고 fdba 딱 하나만 보기
SYS@ora11g> delete from hr.emp_fda;
107 rows deleted.
테이블 지우기
SYS@ora11g> commit;
커밋
SYS@ora11g>
select salary from hr.emp_fda as of timestamp (systimestamp - interval '1' minute);
1 분 전 데이터 보기 : 107 건의 데이터를 보여준다.
SYS@ora11g> insert into hr.emp_fda select * from hr.emp_fda as of timestamp(systimestamp - interval '5' minute);
107 rows created.
5분 전의 데이터로 부어넣기
SYS@ora11g> commit;
커밋
SYS@ora11g> select count(*) from hr.emp_fda;
COUNT(*)
----------
107
플래시백 데이터 아카이브는 트리거성으로 돌아간다.
5. fda 기록 비활성화하기
SYS@ora11g> alter table hr.emp_fda no flashback archive;
Table altered.
기록을 비활성화하면 안에 들어있는 내용은 자동으로 purge 된다.
SYS@ora11g> select * from dba_flashback_archive_tables;
no rows selected
아무 내용도 없다고 나온다.
★ fda retention 시간 변경하기
select * from dba_flashback_archive;
플래시백 데이터 아카이브 목록 보기
방금 우리가 만든 fda 라는 플래시백 아카이브의 retention_in_days 가 365일로 되어 있는 것이 보인다.
SYS@ora11g>
alter flashback archive fda1 modify retention 2 year;
Flashback archive altered.
아카이브가 저장되는 시간을 2년으로 바꾸고
select * from dba_flashback_archive;
다시 확인해보면: retention_in_days 가 730일로 바뀌어 있다.
select * from dba_flashback_archive_ts;
fda1 이라는 플래시백 데이터 아카이브가 어느 테이블스페이스를 쓰고 있고 쿼터값은 얼마인지 확인
(테이블스페이스 fda_tbs, 쿼터값 10m 이라고 나옴)
SYS@ora11g> alter flashback archive fda1 modify quota 20m;
쿼터값 20m 로 바꾸기 : 오류 발생 - modify 는 retention 을 수정하는 데에만 쓸 수 있다.
ERROR at line 1:
ORA-55603: Invalid Flashback Archive command
(이 자료 참고해보기: https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/ALTER-FLASHBACK-ARCHIVE.html)
SYS@ora11g> alter flashback archive fda1 modify tablespace fda_tbs quota 20m;
Flashback archive altered.
쿼터값 바꾸기 성공!
select * from dba_flashback_archive_ts;
바뀌었는지 확인해보기
★ 플래시백 데이터 아카이브에 저장된 데이터 지우기
SYS@ora11g> alter flashback archive fda1 purge before timestamp(systimestamp - interval '1' day);
하루 전 데이터들 모두 지우기
★ 플래시백 데이터 아카이브 삭제
SYS@ora11g> drop flashback archive fda1;
Flashback archive dropped.
2023년 1월 31일 3교시 블록 손상 (0) | 2024.01.31 |
---|---|
2024년 1월 31일 2교시 플래시백 데이터베이스 (0) | 2024.01.31 |
2024년 1월 30일 4교시 질문 투성이 블록 체인지 트래킹 (0) | 2024.01.30 |
2024년 1월 30일 3교시 RMAN 풀 백업, 인크레멘털 백업 (0) | 2024.01.30 |
2024년 1월 30일 2교시 : 1교시 때 했던 것 원복하기 (데이터 파일 이관작업) (0) | 2024.01.30 |