오라클 에서는 redo 라는 아카이브가 존재한다.
이것의 로그를 기록 하는것이 redo log
그럼 redo 라는 것은 무엇일까?
간단하다. 이전에 행해진 작업들 즉 commit 또는 commit 되지 않는 데이터의 변경사항이
redo log 에 들어간다.
이 redo log 를 활용 하지 않는 것이 가장 좋지만, 세상사 어디 내마음과 같지 않으니....
이것을 활용 할일은 다음과 같다.
1. DB 가 깨졌을 경우
2. 데이터를 복구해야 할 일이 생겼을 경우
위 두가지가 가장 대표적인 사용의 예이다.
그럼 redo log가 어디에 위치해 있으며, 용량은 얼마이고 어떠한 상태인지 확인해보자.
현재 DB 의 로그를 확인하는 방법이다.
SQL> select a.group#,a.type,a.member,b.bytes,b.archived,b.status
from v$logfile a, v$log b
where a.group#=b.group#
order by 1,2;
위사진에서 나오듯이 redo log 의 그룹, 타입,파일위치,파일 용양,arc 상태,현재 상태 가 출력된다.
그럼 테스트로 redo log 의 그룹을 추가해보자.
SQL> alter database add logfile group4
'/app_src/oracle/oradata/db11g/redo04.log' size 5M;
위와 같은 SQL 문으로 redo log 가 추가된 것을 확인 할수 있다.
status 상태가 unused 인것은 사용되지 않은 상태여서 그렇다.
생성한 redo log 가 재대로 작동 하는지 확인 하는 방법은 해당 redo log 를 실행 시켜 보는 방법이다.
SQL> alter system switch logfile;
위의 SQL 문으로 로그파일을 switch 시켜 주면 해당 status 가 current 로 변경이 되는 것을 확인할수 있다.
- redo log 삭제
redo log 는 active 상태 일적에는 삭제가 불가능 하다,
내가 삭제하고자 하는 redo log 가 active 상태 일때에는 위의 명령어중 하나인,
SQL> alter system switch logfile;
으로 해당 파일을 inactive 상태로 변경후 삭제 하여야 한다.
삭제 SQL 은 다음과 같다.
SQL> alter database drop logfile group 4;
위의 명령어로 redo log 파일이 지워진 것을 확인 할수 있다.
하지만,
해당 redo log 는 오라클 상에서만 지워진 것이며, OS 상에서의 파일은 그대로 남아 있다.
용량을 차지 한다는 이유로 삭제 하였을 경우에는 OS 상에서 의 파일도 함께 삭제해 주어야 한다.
SQL> !ls /app_src/oracle/oradata/db11g/redo*
SQL> !rm /app_src/oracle/oradata/db11g/redo04.log
SQL> !ls /app_src/oracle/oradata/db11g/redo*
위와 같은 방법으로 redo log 파일을 검색 및 삭제 해줘야 완전한 삭제가 된다고 할수 있다.
redo log 파일의 삭제시 오류가 나는 것들은 다음과 같다.
redo log 파일이 ACTIVE 상태에서 삭제시 다음과 같은 에러가 나온다
ora-01624
ora-00312
redo log 파일이 CURRENT 상태에서 삭제시 다음과 같은 에러가 나온다
ora-01623
ora-00312
'IT > DB' 카테고리의 다른 글
[oracle]오라클 테이블 생성 및 관리 (0) | 2019.05.29 |
---|---|
[Oracle]백업스크립트 (0) | 2019.04.29 |
[Oracle]ASM/오라클 ASM/ASMCMD CP 에러 (0) | 2019.03.09 |
[Oracle] 오라클 권한확인/권한부여/role 권한/권한명령어 (0) | 2019.03.08 |
디스크IO 분산 / 디스크IO 중요성 / 디스크 IO 란? (0) | 2019.02.28 |