블로그 이미지
redkite

카테고리

분류 전체보기 (291)
00.SI프로젝트 산출물 (0)
00.센터 운영 문서 (0)
01.DBMS ============.. (0)
01.오라클 (117)
01.MS-SQL (15)
01.MySQL (30)
01.PostgreSql (0)
01.DB튜닝 (28)
====================.. (0)
02.SERVER ==========.. (0)
02.서버-공통 (11)
02.서버-Linux (58)
02.서버-Unix (12)
02.서버-Windows (2)
====================.. (0)
03.APPLICATION =====.. (11)
====================.. (0)
04.ETC =============.. (0)
04.보안 (5)
====================.. (0)
05.개인자료 (1)
06.캠핑관련 (0)
07.OA관련 (1)
Total
Today
Yesterday

달력

« » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

최근에 올라온 글

  1. PRECISE 모니터링 결과 High Redo Log Buffer Wait 발생함.
  2. 통계 정보를 확인한 결과 Log File Sync Wait 비중이 높음
  3. 오렌지를 통해 Redo Log Time Interval 확인한 결과
    인터벌 간격이 분당 평균 5회 정도로 확인됨.(10회 미만일 경우 파일크기 조정)
  4. Redo Log file 확인
    select a.group#, a.member, b.bytes/1024/1024 mb, b.sequence#, b.archived, b.status
    from v$logfile a, v$log b
    where a.group# = b.group#
    order by 1,2;

select a.group#, a.member, b.bytes/1024/1024 mb, b.sequence#, b.archived, b.status

from v$logfile a, v$log b

where a.group# = b.group#

order by 1,2;


SQL> /


GROUP# MEMBERMB SEQUENCE# ARC STATUS

---------- ------------------------------------------------------------ ---------- ---------- --- ----------------

1 /oracle/product/10.2.0/db_1/oradata/EMSDB/redo01.log 100 184106 NO INACTIVE

2 /oracle/product/10.2.0/db_1/oradata/EMSDB/redo02.log 100 184107 NO ACTIVE

3 /oracle/product/10.2.0/db_1/oradata/EMSDB/redo03.log 100 184108 NO CURRENT

4 /oracle/product/10.2.0/db_1/oradata/EMSDB/redo04.log 100 184104 NO INACTIVE

5 /oracle/product/10.2.0/db_1/oradata/EMSDB/redo05.log 100 184105 NO INACTIVE

-- 반드시 INACTIVE 로그 삭제

SQL> alter database drop logfile group 1;

SQL> alter database drop logfile group 2;

SQL> alter database drop logfile group 3;

SQL> alter database drop logfile group 4;

SQL> alter database drop logfile group 5;


-- 파일 및 그룹 추가

SQL> ALTER DATABASE ADD LOGFILE GROUP 1 ('/oracle/product/10.2.0/db_1/oradata/EMSDB/redo01.log') SIZE 200M;

SQL> ALTER DATABASE ADD LOGFILE GROUP 2 ('/oracle/product/10.2.0/db_1/oradata/EMSDB/redo02.log') SIZE 200M;

SQL> ALTER DATABASE ADD LOGFILE GROUP 3 ('/oracle/product/10.2.0/db_1/oradata/EMSDB/redo03.log') SIZE 200M;

SQL> ALTER DATABASE ADD LOGFILE GROUP 4 ('/oracle/product/10.2.0/db_1/oradata/EMSDB/redo04.log') SIZE 200M;

SQL> ALTER DATABASE ADD LOGFILE GROUP 5 ('/oracle/product/10.2.0/db_1/oradata/EMSDB/redo05.log') SIZE 200M;



-- 로그 파일 스위치

SQL> alter system switch logfile;

Description - 최근 3일간에 대하여 Log Switch가 발생한 간격을 시간당 평균수치로 보여준다.

Criteria - 10.0 min Minimum

Guide - Redo Log Switch의 Time Interval이 10분이하로 계속된다면, redo log file의 size를 증가시켜서
redo log switch가 너무 자주 발생하지 않도록 하여 checkpoint에 의한 I/O를 예방할 수 있다,
또한 생략할 수 있는 데이터베이스내의 Trasaction을 없애는 방식으로 작업을 하여 성능의
개선효과를 볼수 있다
예: CREATE TABLE AS SELECT … NOLOGGING, CREATE INDEX ..... NOLOGGING등.
#

-- 리두로그 파일 변경 주기 확인
select /*+ use_hash(a b) */ a.thread#, to_char(a.first_time,'YYYY/MM/DD HH24') "Time",
round(avg(trunc((a.first_time - b.first_time)*24*60,3)),2) "Interval(Min)"
from
(select thread#, sequence#, first_time from v$loghist where first_time > sysdate -3) a,
(select thread#, sequence#, first_time from v$loghist where first_time > sysdate -3) b
where a.thread# = b.thread#
and a.sequence# = b.sequence# + 1
group by a.thread#, to_char(a.first_time,'YYYY/MM/DD HH24')

order by 2,3;

REDO LOG FILE SIZE의 변경 또는 추가, 삭제
======================================

Oracle에서 사용 중인 REDO Log file은 Default로 Size가 512K인 3개의 REDO Log file이 생깁니다.
DB를 이용하는 Application의 특성에 따라 REDO Log file의 수를 늘리거나 REDO Log file의 Size를 크게 할 필요가 있는데,
REDO Log file의 Size를 변경하거나 수를 늘리는 방법을 다음과 같이 소개합니다.
(참고로 리두로그 사이즈는 Resize 안됩니다... drop 하고 원하는 size 를 주고 add 하셔야 합니다.)


1. REDO Log file의 Size 변경
****************************


1) V$Log와 V$Logfile을 이용해 어느 것이 Current Log인지 또한 각 Log file의 Data file 명인지를 확인합니다.

SVRMGR> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHAN
------ ------- --------- ------ -------- --- -------- ----------
FIRST_TIME
------------------
1 1 55 512000 1 NO CURRENT 65081
2/06/95 19:32:57
2 1 53 512000 1 NO INACTIVE 64111
1/21/95 11:06:14
3 1 54 512000 1 NO INACTIVE 64801
1/21/95 11:41:44
3 rows selected.


SVRMGR> select * from v$logfile order by GROUP#, MEMBER ;

GROUP# STATUS MEMBER
-------- ------- ------------------------------------------------
1 ONLINE /oracle/app/oracle/redo/redo01b.log NO
1 ONLINE /oradata/CHUN/redo01a.log NO
2 ONLINE /oracle/app/oracle/redo/redo02b.log NO
2 ONLINE /oradata/CHUN/redo02a.log NO
3 ONLINE /oracle/app/oracle/redo/redo03b.log NO
3 ONLINE /oradata/CHUN/redo03a.log NO

6 rows selected.


2) V$Logfile에서 확인된 Inactive Log file을 먼저 아래의 Command를 이용해 Log file을 Drop합니다. (반드시 Inactive Log file 이어야 합니다.)

정상적으로 Drop되면 Host Command (OS 명령어)를 이용해 Datafile을 삭제 합니다.
(그룹으로 drop 할때)
ALTER DATABASE DROP LOGFILE GROUP 3 ;
또는
(logfile 을 찾아서 drop 할때)

SQLDBA> alter database drop logfile ('/oradata/CHUN/redo03.log') ;
Statement processed.


Logfile 삭제

SQLDBA> !rm /oradata/CHUN/redo03.log


참고로 Oracle 에서는 Default로 3개의 REDO Log file이 생기는데 최소한 2개 이상의 REDO Log file이 필요합니다.

(Drop하면 Ora-1567 & Ora-1532 Error가 발생합니다.)



3) 2)에서 Drop한 GROUP 1의 Logfile을 Add합니다. (참고로 /oradata 에 /oracle 에 두개의 Logfile 을 생성시켰습니다. - 같은 그룹에 member 추가)

SVRMGR> ALTER DATABASE ADD LOGFILE GROUP 3 ('/oradata/CHUN/redo03a.log', '/oracle/app/oracle/redo/redo03b.log') size 50m ;
Statement processed.



4) V$Log에서 Current Logfile은 바로 Drop할 수 없다. 이를 Drop하기 위해서는 현재의 Current Logfile을 Inactive로 하여야 합니다.

Inactive로 하려면 'Alter System Switch Logfile' Command를 이용하여 Logfile 을 변경합니다.

SVRMGR> alter system switch logfile ;
Statement processed.

(확인)

select * from v$log ;

1 1 104 52428800 2 NO CURRENT 1561464201 2007/01/22 10:13:04
2 1 105 52428800 2 YES INACTIVE 1561464775 2007/01/22 10:22:40
3 1 103 52428800 2 YES INACTIVE 1561463530 2007/01/22 10:02:36



5) 작업하려는 LOGFILE GROUP의 Status가 INAVTIVE 되었으면 위에서 했던것 처럼 Logfile을 Drop하고 Datafile의 Remove후 Logfile의 Size를 (변경하여) Add한다.

(그룹으로 drop 할때)

ALTER DATABASE DROP LOGFILE GROUP 2 ;

또는

(logfile 을 찾아서 drop 할때)

SVRMGR> alter database drop logfile ('/oradata/CHUN/redo02.log') ;
Statement processed.

Logfile 삭제

SVRMGR> !rm /oradata/CHUN/redo03.log


Logfile 추가 (group 2)

SVRMGR> ALTER DATABASE ADD LOGFILE GROUP 2 ('/oradata/CHUN/redo02a.log', '/oracle/app/oracle/redo/redo02b.log') size 50m ;
Statement processed.




2. redo log file 추가
*********************

설치시 기본으로 생기는 3개의 Log file 외 Log file 을 추가할 경우에는 아래와 같이 Add 하시면 됩니다. (같은 그룹의 member 를 두개 둘때....)
SVRMGR> ALTER DATABASE ADD LOGFILE GROUP 4 ('/oradata/CHUN/redo04a.log', '/oracle/app/oracle/redo/redo04b.log') size 50m ;
Statement processed.


예) 50M 와 52428800 (Byte) 는 같은 사이즈를 갖는다.

alter database add logfile '/oradata/TEST/redo04.log' size 52428800 ;
alter database add logfile '/oradata/TEST/redo05.log' size 50M ;
alter database add logfile
group 6 ('/oradata/TEST/redo06.log') size 50M ;


[dell:/oradata/TEST] # ls -l
총 2279060
drwxr-x--- 2 oracle dba 512 10월 2일 11:08 ./
drwxr-xr-x 9 oracle dba 512 10월 2일 09:37 ../
-rw-r----- 1 oracle dba 7061504 10월 2일 11:09 control01.ctl
-rw-r----- 1 oracle dba 7061504 10월 2일 11:09 control02.ctl
-rw-r----- 1 oracle dba 7061504 10월 2일 11:09 control03.ctl
-rw-r----- 1 oracle dba 52429312 10월 1일 18:12 redo01.log
-rw-r----- 1 oracle dba 52429312 10월 2일 09:16 redo02.log
-rw-r----- 1 oracle dba 52429312 10월 2일 11:09 redo03.log
-rw-r----- 1 oracle dba 52429312 10월 2일 11:07 redo04.log
-rw-r----- 1 oracle dba 52429312 10월 2일 11:08 redo05.log
-rw-r----- 1 oracle dba 293609472 10월 2일 11:07 sysaux01.dbf
-rw-r----- 1 oracle dba 513810432 10월 2일 11:07 system01.dbf
-rw-r----- 1 oracle dba 20979712 9월 30일 06:00 temp01.dbf
-rw-r----- 1 oracle dba 68165632 10월 2일 11:08 undotbs01.dbf
-rw-r----- 1 oracle dba 5251072 10월 2일 09:21 users01.dbf


[dell:/oradata/TEST] # du -sk *log
51248 redo01.log
51248 redo02.log
51248 redo03.log
51248 redo04.log
51248 redo05.log


3. redo log file 삭제
*********************

ALTER DATABASE DROP LOGFILE GROUP 6 ;

 

 

Posted by redkite
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함