AWS/RDS Oracle

[RDS ORACLE] How to manage Redo log Files

learndba 2024. 9. 19. 15:12

 

Archive log가 너무 작아도 문제 너무 커도 문제다.

너무 작으면 Redo Logs 크기가 작다는 뜻이므로 Log switch가 빈번하게 일어나고,

너무 크면 LGWR에 의해서 archivelog를 오프라인으로 떨어뜨릴 때 조금 딜레이 될 수 있다.(거의 미비함)

file size가 크면 관리하기는 좀 빡세기도하고,,,(굳이 따지자면..)

어떤 용도의 시스템인지 고려해서 설정해야 한다.

 

 

1. Log switch 정도 (일 평균 switch횟수 , 한 시간당 switch되는 횟수)

Select *
From ( Select avg(count(*)) avg_day
	   From v$loghist
       Group by Trunc(First_time)),
     ( Select max(count(*)) avg_hour
       From v$loghist
       Group by to_char(first_time, 'YYYYMMDD HH24'));

 

나의 경우 avg_day : 269, avg_hour :16으로 나와서

이를 조정해주기로 함.

 

 

2. Redo Log Size 조회 

select * from v$log;

select * from v$logfile;

 

 

3. Redo Log 생성 (as-is : 100M*4ea / to-be : 200M*4ea)

begin
	rdsadmin.rdsadmin_util.add_logfile(bytes => 209715200);
end;
/
--4번 수행

 

 

4. Checkpoint 수행 

--checkpoint 수행
begin
	rdsadmin.rdsadmin_util.checkpoint;
end;
/

 

 

5. Redo Log 삭제

begin 
	rdsadmin.rdsadmin_util.drop_logfile(grp => 1);
	rdsadmin.rdsadmin_util.drop_logfile(grp => 2);
	rdsadmin.rdsadmin_util.drop_logfile(grp => 3);
	rdsadmin.rdsadmin_util.drop_logfile(grp => 4);
end;
/

 

6. Redo Log 변경 

begin
	rdsadmin.rdsadmin_util.switch_logfile;
end;
/
--Unused를 수동으로 변경.

 

 

* Checkpoint와 Logswitch의 차이

 

두 개는 비슷하면서도 다르다.

 

Checkpoint가 발생하면 기록되지 않은 부분이 Redologs에 기록된 이후에

DBWR에 의해서 disk에 기록되며 데이터들이 commit 돤다.

Current는 아니지만 active에 있었던 logfile들이 inactive로 변경됨을 의미한다.

 

Logfile을 Switch하는 것은 

1번 logfile에 작성중이였으면 2번 logfile에 작성할 수 있게끔 switch하는 것을 의미한다.

전자는 Data를 Commit하는 것에 초점, 후자는 작성하는 Logfile을 변경하는 것에 초점이 맞춰져 있음.