*4.1 Redo log file 확인 (필)
SELECT
A.GROUP#, A.MEMBER, B.BYTES, B.STATUS, B.SEQUENCE#
FROM
V$LOGFILE A, V$LOG B
WHERE
A.GROUP# = B.GROUP#
ORDER BY 1;
- 현재 log 그룹과 member의 운영 상황을 조회한다.
- GROUP# : 그룹 번호
- MEMBER : 멤버 파일의 경로 및 파일명
- BYTES : 멤버 파일의 크기
- STATUS : 그룹의 상태 [표 4.1]을참고 한다.
# V$LOG B 컨트롤 파일 조회하는거나 다름없다.
ARCHIVE LOG
LIST
- Archive log 관련 내용을 조회한다.
- Archive log mode가 아닌 경우 조회된 내용은 별 의미가 없다.
SELECT
a.group#, a.member, b.bytes, b.status, b.sequence#
FROM
v$logfile a, v$log b
WHERE
a.group# = b.group#
ORDER BY
1;
ARCHIVE LOG
LIST
# 노 아카이브 모드 나오면 지나고 나면 다 못씀
*4.2 Log switch와 checkpoint (필)
ALTER SYSTEM
SWITCH LOGFILE;
- Log switch를 강제로 발생 시킨다.
ALTER SYSTEM
CHECKPOINT;
- Check point를 강제로 발생 시킨다.
SELECT
a.group#, a.member, b.bytes, b.status, b.sequence#
FROM
v$logfile a, v$log b
WHERE
a.group# = b.group#
ORDER BY 1;
ALTER
DATABASE DROP LOGFILE GROUP 10;
# 현재 나는 10을 쓰고 있으므로 10을 드랍한다.
# 당연히 안된다. 쓰고 있는데
alter
system switch logfile;
SELECT
a.group#, a.member, b.bytes, b.status, b.sequence#
FROM
v$logfile a, v$log b
WHERE
a.group# = b.group#
ORDER BY 1;
# 11번으로 바뀐다. 10은 액티브 모드가 된다. 쓰고 난 후라는 뜻이다.
ALTER
SYSTEM CHECKPOINT;
SELECT
a.group#, a.member, b.bytes, b.status, b.sequence#
FROM
v$logfile a, v$log b
WHERE
a.group# = b.group#
ORDER BY 1;
# 강제로 체크포인트를 만들어 리두로그버퍼에 있는 데이터를 리두라이트가 데이터베이스영역에 있는 리두 로그파일로 저장한다.
# 그래서 액티브모드로 바뀌었던 10번 시퀀스에 있는 리투1번 파일이 인액티브 모드로 바뀐것이다.
!vi
switch.sql
ALTER SYSTEM
SWITCH LOGFILE;
ALTER SYSTEM
CHECKPOINT;
# 스위치라는 sql문을 만들고 스위치 로그파일과 체크포인터를 한번에 하는 스크립트를 작성한다.
@switch
SELECT
a.group#, a.member, b.bytes, b.status, b.sequence#
FROM
v$logfile a, v$log b
WHERE
a.group# = b.group#
ORDER BY 1;
# 새로 만든 애들로 바로 스위치함.
# 기존에 9번이엇던 시퀀스가 다음 12번으로 스위치 되고 기존에 자료가있던 11번은 체크포인터를 이용하여 인액티브모드로 바꿔준다.
*4.3 Redo log group
추가와 삭제 (필)
ALTER
DATABASE DROP LOGFILE GROUP [group number];
- 지정한 redo log group을 삭제한다.
ALTER
DATABASE ADD LOGFILE GROUP [group number]
(['member
file1', 'member file2', ... ]) SIZE [크기];
SELECT
a.group#, a.member, b.bytes, b.status, b.sequence#
FROM
v$logfile a, v$log b
WHERE
a.group# = b.group#
ORDER BY 1;
ALTER
DATABASE DROP LOGFILE GROUP 2;
# 두번째 인액티브에 있는 11번을 삭제한다.
SELECT
a.group#, a.member, b.bytes, b.status, b.sequence#
FROM
v$logfile a, v$log b
WHERE
a.group# = b.group#
ORDER BY 1;
# 2번 그룹이엇던 시퀀스11번이 삭제되고 두개의 그룹만 남았다.
!ls
/app/ora12c/oradata/DB12/
!rm
/app/ora12c/oradata/DB12/redo02.log
# 기존 2번 그룹 리두 버퍼 파일 삭제
ALTER
DATABASE ADD LOGFILE GROUP 4
'/app/ora12c/oradata/DB12/redo04.log'
SIZE 50M;
# 새로운 리두파일 4번 그룹으로 생성 및 연동
SELECT
a.group#, a.member, b.bytes, b.status, b.sequence#
FROM
v$logfile a, v$log b
WHERE
a.group# = b.group#
ORDER BY 1;
# 4번 그룹인 시퀀스 넘버 0, 크기 50M로 생성되었다. 당연 새로 만들었으니 언유즈 상태
@switch
SELECT
a.group#, a.member, b.bytes, b.status, b.sequence#
FROM
v$logfile a, v$log b
WHERE
a.group# = b.group#
ORDER BY 1;
# 새로 생긴 그룹 4로 스위칭 하여 조회한다.
# 자동으로 다음 시퀀스 넘버인 13으로 생성되어 커런트 모드로 바뀐다.
ALTER
DATABASE ADD LOGFILE GROUP 5
'/app/ora12c/oradata/DB12/redo05.log'
SIZE 50M;
SELECT
a.group#, a.member, b.bytes, b.status, b.sequence#
FROM
v$logfile a, v$log b
WHERE
a.group# = b.group#
ORDER BY 1;
# 4번째인 5번 그룹으로 만들어본다.
@switch
SELECT
a.group#, a.member, b.bytes, b.status, b.sequence#
FROM
v$logfile a, v$log b
WHERE
a.group# = b.group#
ORDER BY 1;
# 스위칭을 하면 자연스럽게 0이 아닌 다음 번호 14번으로 시퀀스가 바뀐다.
*4.4 Redo log
member 추가와 삭제 (필)
ALTER
DATABASE DROP LOGFILE MEMBER
['member
file1', 'member file2', ...];
- 지정한 멤버 파일을 삭제한다.
ALTER DATABASE ADD LOGFILE MEMBER
['member
file'] TO GROUP [group nember],
... ;
- redo log 멤버 파일을 지정한 그룹에 추가한다.
ALTER
DATABASE ADD LOGFILE MEMBER
'/app/ora12c/oradata/DB12/redo04_2.log'
TO GROUP 4,
'/app/ora12c/oradata/DB12/redo05_2.log'
TO GROUP 5;
SELECT
a.group#, a.member, b.bytes, b.status, b.sequence#
FROM
v$logfile a, v$log b
WHERE
a.group# = b.group#
ORDER BY 1;
# 미러링 파일을 추가해준다. 복사인가..
ALTER
DATABASE DROP LOGFILE MEMBER
'/app/ora12c/oradata/DB12/redo04.log';
ALTER
DATABASE DROP LOGFILE MEMBER
'/app/ora12c/oradata/DB12/redo01.log';
# 안지워진다.
@switch
@switch
@switch
@switch
SELECT
a.group#, a.member, b.bytes, b.status, b.sequence#
FROM
v$logfile a, v$log b
WHERE
a.group# = b.group#
ORDER BY 1;
# 5번 그룹까지 내려간다.
ALTER
DATABASE DROP LOGFILE MEMBER
'/app/ora12c/oradata/DB12/redo04.log';
SELECT
a.group#, a.member, b.bytes, b.status, b.sequence#
FROM
v$logfile a, v$log b
WHERE
a.group# = b.group#
ORDER BY 1;
# 4번 그룹의 원 파일을 삭제했다.
*4.5 Redo log file 재배치
- redo log 그룹과 member를 시스템 상태에 다음 조건에 따라 재배치한다.
. /app/ora12c/oradata/DB12 디렉토리에 위치한 redo log file을 3개의
그룹과 2개의 멤버 파일로 서로 다른 디스크의 마운트 디렉토리인 disk4와 disk5에 다중화 한다.
. 단
그룹의 번호는 1,2,3으로,
멤버 파일의 크기는 50M로
제한한다.
SELECT
a.group#, a.member, b.bytes, b.status, b.sequence#
FROM
v$logfile a, v$log b
WHERE
a.group# = b.group#
ORDER BY 1;
@switch
ALTER DATABASE DROP LOGFILE GROUP 3;
ALTER
DATABASE DROP LOGFILE GROUP 1;
SELECT
a.group#, a.member, b.bytes, b.status, b.sequence#
FROM
v$logfile a, v$log b
WHERE
a.group# = b.group#
ORDER BY 1;
# 기존 1,2,3 그룹을 지운다.
!ls
/app/ora12c/oradata/
ALTER
DATABASE ADD LOGFILE GROUP 1
('/app/ora12c/oradata/disk4/redo01.log',
'/app/ora12c/oradata/disk5/redo01.log') SIZE 100M;
ALTER
DATABASE ADD LOGFILE GROUP 2
('/app/ora12c/oradata/disk4/redo02.log',
'/app/ora12c/oradata/disk5/redo02.log') SIZE 100M;
ALTER
DATABASE ADD LOGFILE GROUP 3
('/app/ora12c/oradata/disk4/redo03.log',
'/app/ora12c/oradata/disk5/redo03.log') SIZE 100M;
# 새로운 그룹을 만든다.
SELECT
a.group#, a.member, b.bytes, b.status, b.sequence#
FROM
v$logfile a, v$log b
WHERE
a.group# = b.group#
ORDER BY 1;
# 새로운 1,2,3 그룹을 만들고 미러링 파일도 만들어준다.
ALTER
DATABASE DROP LOGFILE GROUP 4;
ALTER
DATABASE DROP LOGFILE GROUP 5;
# 4, 5 를 지워준다. 5는 커런트 상태이기 때문에 지금은 지워지지않는다.
@switch
SELECT
a.group#, a.member, b.bytes, b.status, b.sequence#
FROM
v$logfile a, v$log b
WHERE
a.group# = b.group#
ORDER BY 1;
# 1번 그룹으로 시퀀스넘버가 이동한다.
ALTER
DATABASE DROP LOGFILE GROUP 5;
SELECT
a.group#, a.member, b.bytes, b.status, b.sequence#
FROM
v$logfile a, v$log b
WHERE
a.group# = b.group#
ORDER BY 1;
# 5번 그룹을 커런트상태가 풀리면서 지워진다.
!ls
/app/ora12c/oradata/DB12
!rm -rf
/app/ora12c/oradata/DB12/*.log
!ls
/app/ora12c/oradata/DB12
# 기존에 있던 안쓰는 파일들을 지운다.
댓글 없음:
댓글 쓰기