2020. 5. 28.

[Oracle] 관리자 4장 실습 Redo log file 관리


*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


# 기존에 있던 안쓰는 파일들을 지운다.




댓글 없음:

댓글 쓰기