본문 바로가기

ORACLE

[ORACLE] 점검 목록

매일매일 출근하자마자 시스템의 장애를 사전에 방지하기 위한 일일점검을 하여 팀장 및 부장에게 보고하는 체계가 마련되야 한다.
크게 분류하자면..
파일시스템, 데이터베이스, 관련 Applications 조회등을 점검하는 것이 좋다.
== 일일점검(Daily) ==
파일시스템
데이터베이스 관련된 파일시스템이 얼마나 사용하고 있는지 등을 체크한다.
예를 들어 평상시 사용율이 50% 미만이였다면.. 체크할 기준을 50%로 잡고 점검한다.
그러다가 어느날 60%가 넘었다면.. 그 전날 무슨 작업이 있었는지를 반드시 확인한다.
데이터베이스
alertSID.log ,trace file을 매일 체크
-.장애의 원인은 보통 trace file이나 오라클의 alertSID.log파일에 기록되는데 이 파일을 근거로 하여 장애의 원인을 파악할 수 있는 환경이 되어야 함
-.이 화일의 내용은 무한히 늘어나므로 스크립트를 이용하여 일자별 파일을 생성하고 이전 날짜 파일들은 다른 디렉토리나 파일시스템으로 옮기거나 백업받아서 파일시스템이 FULL나는것을 방지해야함.
*_dump_dest free space여부를 매일 확인
InitSID.ora이나 configSID.ora *_dump_dest가 설정되어 있다.
㉰ 각 테이블스페이스에 free space fragmentation이 일어났는지 확인
-.매일 테이블스페이스의 사용율을 체크하여 테이블스페이스가 Full날것을 미리 방지
(현재 저희회사는 90%를 기준으로 체크함-반드시 이력을 남길 것)
-.Fragmentation이 많이 일어나고 Free space는 많이 존재하지 않는다면 하나의 Data file을 첨가
-.Fraementation도 높고 Free spaceDisk space가 거의 존재하지 않는다면 Table들과 free space를 각각 연속적으로 연결이 되도록 backup/export를 받은 후 다시 drop/import를 하고 재구성
CONTROL FILE
㉮ 매일 매일 Hot Backup
Online Redo Log File
㉮ 상태가 Invalid한 것을 체크(V$LOG 사용)
select * from v$logfile;
-.INVALID log file error I/O error로서 alert.log에 기록되지 않으며 alert.log file을 분석함으로써 탐지가 가능
-.STALE shutdown abort 전에 쓰여지고 있는 log가 완전하지 않거나 그 log에 대해 걸려있는 write 상태가 알 수 없는 것일 때에 생성됨(alert.log 화일에 기록되지 않음)
Log Switch Interval 체크
select thread#,sequence#,time,archive_name
from v$log_history;
-.Log Switch interval은 위의 time의 차이를 계산하면 알 수 있음.
-.Log Switch가 너무 자주 발생하면 혹시 hot backup 상태로 두고 있는 화일이 있는지 확인
select file#,status
from v$backup;
Checkpoint 간격 체크.
-.잦은 CheckpointCrash Recovery의 기간은 줄여줌
-.Dirty Buffers를 자주 쓰는 것과 File Headers를 자주 Update시 오버헤드 발생
Rollback Segment tablespace
Rollback Segment online이 되어있는지 체크
select segment_name,status
from dba_rollback_segs;
-.Rollback SegmentOffline이 되어있을 수 있음
(Rollback segment를 가진 datafile에 문제가 발생시)
ORA-1555 에러가 생성되는지 여부를 체크
-.데이터베이스는 여전히 사용가능하며 application error가 일어날 수도 있음
ORA-1538,1551,1552,1553,1554,1555,1556,1557,1558,1559,1562를 체크
-.위의 error extent를 할당할 수 없거나 tablespace fragmentation이 일어나는 경우에
나타남
Archived Redo Logs
Archive File이 생성되는 파일시스템(또는 디렉토리)에 여유 공간이 있는지 체크
-.Disk에 여유공간이 없어 archive log write할 수 없어서 DB hang이 걸림
Archived log file을 특정 threshold에 도달할 때마다 backup을 받음.
(저희는 매일 백업 받으며 Tape에 한달 보관하고 있음)
Archived redo log file sequence #가 순차적인지 확인
ARCH process가 움직이는지를 체크
-.ARCH process가 움직이지 않아서 DB hang이 걸리는 문제를 막을 수 있음
alert.log Archive log들에 관한 error가 있는지 체크
-.initSID.ora(parameter file)내의 *_dump_dest방향을 참조함
OS detection
Disk failure controller의 이상이 있는지 체크
OS mirroring이 되고 있는지 체크
기타
SQL*NET 상태를 체크
-.SQL*NET V2의 경우에는 listener process runnung인지 확인
$lsnrctl service
== 매주점검(Weekly) ==
㉮ 악성쿼리와 악성트램잭션에 대한 응답시간 체크
-. 갑자기 performance가 떨어지는 경우에 어떤 원인인지 알아내서 그 원인 추적을 할 필요가 있음
Temporary tablespace rollback segment tablespace에서 object들이 생성되지 않았는지 체크
-.Object들이 생성되었을 경우 충분히 삭제되어질 가능성이 큼
AUD$가 비워지는지 확인한다.
-.Aud$ auditing 할 경우에 데이터량이 많기 때문에 export 받고 테이블은 비워야 함
Rollback segment tablespace에 충분한 공간이 있는지 체크
-.Full 방지
-.Fragmentation이 일어나지 않도록 주의
Data Dictionary TablesSystem Rollback Segment만이 존재해 함
OFFLINE Full backup을 받는다.
-.24/365시스템이 아니라면 가동되는 database Offline Full Backup을 받아야함
(경우에 따라 월단위 Offline Full Backup 받음)
OS의 운영 상태를 확인할 수 있는 통계를 만든다.
(위 경우는 SP 역할임)
== 매월점검(Monthly) ==
㉮ 주기적으로 recovery test를 한다.
(저희는 1년에 한번씩 테스트합니다)
V$rollstat를 이용해서 Rollback segment 상태 체크
㉰ 월간운영 현황 보고서 작성
-.버퍼, 트랜잭션 현황, 데이터 및 인덱스 현황등을 파악하여 월별 데이터를 확보