Data Base/Linux

231213 Linux_Redo log file

잇꼬 2023. 12. 13. 12:17
728x90
반응형
SMALL

■ Redo log file

(=: 일기쓰기: 일기 내용에 일어난 일에 대해 자세히 적어두면 나중에 확인가능하다)

1. 복구 방식 제공

2. 최소 두개 이상의 그룹 필요, 순환 형식이기 때문에

 

# SQL

SELECT * FROM v$log;

SELECT * FROM v$logfile;

SELECT * FROM v$log_history;

FIRST_CHANGE# ~ NEXT_CHANGE# : SCN 범위

 

## 운영중에 가능 하나, CURRENT 를 제외하고 

# Redo log file GROUP 추가

ALTER DATABASE ADD LOGFILE GROUP 4 ('' 물리적인 장소 , ''); 

 

SQL> show parameter control_files

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      

/u01/app/oracle/oradata/ora11g /control01.ctl, /u01/app/oracle/fast_recovery_area/ora11g/control02.ctl

 

[oracle@oracle ora11g]$ ls
control01.ctl  redo01.log  redo03.log    system01.dbf  undotbs01.dbf
example01.dbf  redo02.log  sysaux01.dbf  temp01.dbf    users01.dbf

[oracle@oracle ora11g]$ pwd
/u01/app/oracle/oradata/ora11g

ALTER DATABASE ADD LOGFILE GROUP 4 ('/u01/app/oracle/oradata/ora11g/redo04.log ', 
'/u01/app/oracle/fast_recovery_area/ora11g/redo04.log') size 100m;

SELECT * FROM v$logfile;

SELECT * FROM v$log;

새로 만든 logfile > os 기능으로 생성, writer 성능을 좋게 하기 위해서 : blocksize 용량

cf) log_buffer : os block size 배수 단위로 설정(512byte)

ALTER DATABASE ADD LOGFILE GROUP 5 ('/u01/app/oracle/oradata/ora11g/redo05.log', 
'/u01/app/oracle/fast_recovery_area/ora11g/redo05.log') size 100m;

SELECT * FROM v$logfile;
SELECT * FROM v$log;

 

SELECT to_char(first_time, 'yyyy-mm-dd hh24:mi:ss') FROM v$log_history;

SELECT
    sequence#,
    first_change#,
    next_change#,
    to_char(first_time, 'yyyy-mm-dd hh24:mi:ss')
FROM
    v$log_history;

 

# Redo log file MEMBER 추가

ALTER DATABASE ADD LOGFILE MEMBER 

'경로/파일', TO GROUP 그룹숫자, '경로/파일', TO GROUP 그룹숫자, ... '경로/파일', TO GROUP 그룹숫자;

ALTER DATABASE ADD LOGFILE MEMBER 
'/u01/app/oracle/fast_recovery_area/ora11g/redo01.log' TO GROUP 1,
'/u01/app/oracle/fast_recovery_area/ora11g/redo02.log' TO GROUP 2,
'/u01/app/oracle/fast_recovery_area/ora11g/redo03.log' TO GROUP 3;

 

SELECT * FROM v$log;
SELECT * FROM v$logfile;

INVALID : 빈 껍데기와 동

MEMBER 물리적으로 다른 위치에 생성할 것

[oracle@oracle ~]$ cd /u01/app/oracle/fast_recovery_area/ora11g/
[oracle@oracle ora11g]$ pwd
/u01/app/oracle/fast_recovery_area/ora11g
[oracle@oracle ora11g]$ ls
control02.ctl  redo01.log  redo02.log  redo03.log  redo04.log  redo05.log
[oracle@oracle ora11g]$ ls -l
total 367940
-rw-r-----. 1 oracle oinstall   9748480 Dec 12 21:14 control02.ctl
-rw-r-----. 1 oracle oinstall  52429312 Dec 12 21:10 redo01.log : 아무것도 없는 파일
-rw-r-----. 1 oracle oinstall  52429312 Dec 12 21:10 redo02.log  : 아무것도 없는 파일
-rw-r-----. 1 oracle oinstall  52429312 Dec 12 21:10 redo03.log  : 아무것도 없는 파일
-rw-r-----. 1 oracle oinstall 104858112 Dec 12 20:25 redo04.log
-rw-r-----. 1 oracle oinstall 104858112 Dec 12 20:36 redo05.log

 

# Redo log file GROUP 삭제

1. redo log group 상태가 inactive 상태인 그룹에 대해서 삭제할 수 있다.

ALTER DATABASE DROP LOGFILE GROUP 그룹숫;

ALTER DATABASE DROP LOGFILE GROUP 1;

 

SELECT * FROM v$log; -- ACTIVE 상태일 경우, 기다려야 한다.

 

# ACTIVE -> INACTIVE 로 상태 변경

ALTER SYSTEM CHECKPOINT;

SELECT * FROM v$log;

 

ALTER DATABASE DROP LOGFILE GROUP 1;
ALTER DATABASE DROP LOGFILE GROUP 2;
ALTER DATABASE DROP LOGFILE GROUP 3;

하고 난 후 추가해주자

 

오류발생 

/u01/app/oracle/oradata/ora11g/ , /u01/app/oracle/fast_recovery_area/ora11g/ 파일 있는지 확인

 

# 그룹을 삭제한 후 물리적인 디렉터리에 가서도 꼭 그룹에 해당하는 파일 삭제

# 꼭 주의!! 지워야 하는 파일만 삭제할 것.

 

/u01/app/oracle/oradata/ora11g/' 

[oracle@oracle ora11g]$ rm -i redo01.log  redo02.log redo03.log


'/u01/app/oracle/fast_recovery_area/ora11g/' 

 

[oracle@oracle ora11g]$ rm -i redo01.log  redo02.log redo03.log

 

 

# Redo log file MEMBER 삭제

1. redo log group 상태가 inactive 상태인 그룹에 member를 삭제할 수 있다.

ALTER DATABASE DROP LOGFILE MEMBER '/home/oracle/backup/redo06.log';

 

# member을 삭제한 후 물리적인 디렉터리에 가서도 꼭 당하는 파일 삭제

# 꼭 주의!! 지워야 하는 파일만 삭제할 것.

 

 

[oracle@oracle backup]$ rm -i redo06.log
rm: remove regular file ‘redo06.log’? y

 

# 수동으로 log swtich 발생

ALTER SYSTEM SWITCH LOGFILE

SELECT * FROM v$log;

SELECT * FROM v$logfile;

728x90
반응형
LIST