🔍 OSW(Oracle System Watcher)란? 숨겨진 성능 모니터링의 보석! 💎
🔍 OSW(Oracle System Watcher)란? 숨겨진 성능 모니터링의 보석! 💎
안녕하세요! 오라클 성능 튜닝의 세계로 오신 것을 환영합니다! 👋
오라클 데이터베이스를 운영하다 보면 "어? 갑자기 왜 느려졌지?" 하는 상황을 자주 마주하죠. 그럴 때마다 "그때 시스템이 어떤 상태였는지 알 수 있다면..." 하고 아쉬워한 적 있으신가요? 😅
바로 그런 고민을 해결해주는 게 **OSW(Oracle System Watcher)**입니다! 마치 시스템의 블랙박스 같은 역할을 하는 이 놀라운 도구에 대해 재미있게 알아보겠습니다! 🚀
OSW가 뭔가요? 🤔
**Oracle System Watcher(OSW)**는 오라클에서 제공하는 무료 시스템 모니터링 도구입니다!
쉽게 말하면...
- 자동차의 블랙박스 같은 역할 📹
- 의사의 심전도 모니터 같은 역할 💓
- 보안카메라 같은 역할 📱
시스템에서 일어나는 모든 일들을 조용히 기록해두었다가, 문제가 생겼을 때 "그때 뭔 일이 있었나?" 하고 찾아볼 수 있게 해주는 똑똑한 도구예요!
OSW의 마법 같은 기능들 ✨
1. 24시간 자동 감시 👁️🗨️
- 잠들지 않는 파수꾼처럼 계속 모니터링
- CPU, 메모리, I/O, 네트워크 모든 것을 추적
- 문제 발생 순간도 놓치지 않음!
2. 시간대별 상세 분석 📈
오전 9시: CPU 사용률 30% (정상)
오전 10시: CPU 사용률 95% (문제 발생!)
오전 11시: CPU 사용률 25% (정상 복구)
3. 다양한 시스템 정보 수집 📊
- CPU: 사용률, 대기시간, 컨텍스트 스위치
- 메모리: 사용량, 페이지 스왑, 버퍼 상태
- 디스크: I/O 대기, 처리량, 응답시간
- 네트워크: 패킷 전송률, 에러율
- 프로세스: 개별 프로세스 리소스 사용량
OSW 설치하기 - 생각보다 쉬워요! 🛠️
1단계: OSW 다운로드
# Oracle MOS(My Oracle Support)에서 다운로드
# 또는 이미 설치된 Oracle Grid Infrastructure에 포함
cd $ORACLE_HOME/oswbb
2단계: 설치 및 시작 (정말 간단!)
# OSW 시작 (기본 설정: 30초 간격, 48시간 보관)
./startOSWbb.sh
# 사용자 정의 설정
./startOSWbb.sh 60 72 # 60초 간격, 72시간 보관
3단계: 확인
# OSW가 실행 중인지 확인
ps -ef | grep OSW
# 로그 파일 확인
ls -la archive/
이게 끝이에요! 😎
실무에서 OSW 활용하기 - 진짜 케이스들! 💼
케이스 1: "오전 10시마다 느려져요!" 😰
상황: 매일 오전 10시만 되면 시스템이 느려진다는 사용자 불만
OSW로 분석:
# 오전 10시 전후 CPU 상태 확인
grep "10:0" archive/*/oswcpu.dat
# 결과: 오전 10시에 백업 스크립트가 실행되면서 CPU 100% 점유!
# 해결: 백업 스케줄을 새벽 시간으로 변경
케이스 2: "갑자기 ORA-00600 에러가!" 💥
상황: 설명할 수 없는 오라클 에러 발생
OSW로 분석:
# 에러 발생 시점 메모리 상태 확인
grep "14:30" archive/*/oswmeminfo.dat
# 결과: 메모리 부족으로 시스템 스왑 발생!
# 해결: SGA 크기 조정 및 메모리 증설
케이스 3: "디스크가 느린 것 같아요" 🐌
상황: 쿼리 응답시간이 평소보다 10배 느림
OSW로 분석:
# I/O 대기시간 확인
grep "svctm\|await" archive/*/oswiostat.dat
# 결과: 특정 디스크의 응답시간이 200ms! (정상: 5ms)
# 해결: 디스크 하드웨어 점검 및 교체
OSW 고급 활용법 - 진짜 고수되기! 🎓
1. 자동 분석 스크립트 만들기
#!/bin/bash
# daily_osw_check.sh
DATE=$(date +%Y%m%d)
LOG="/var/log/osw_daily_${DATE}.log"
echo "=== OSW Daily Report $(date) ===" > $LOG
# CPU 평균 사용률
echo "Average CPU Usage:" >> $LOG
grep "$(date +%d)" archive/*/oswcpu.dat | awk '{sum+=$3; count++} END {print sum/count "%"}' >> $LOG
# 메모리 사용량
echo "Memory Usage:" >> $LOG
tail -1 archive/*/oswmeminfo.dat >> $LOG
# 디스크 I/O 현황
echo "Disk I/O Status:" >> $LOG
tail -1 archive/*/oswiostat.dat >> $LOG
# 메일 발송
mail -s "OSW Daily Report" dba@company.com < $LOG
2. 성능 임계값 알림 설정
#!/bin/bash
# osw_alert.sh
# CPU 사용률 90% 이상 시 알림
CPU_USAGE=$(tail -1 archive/*/oswcpu.dat | awk '{print $3}')
if [ $(echo "$CPU_USAGE > 90" | bc) -eq 1 ]; then
echo "ALERT: CPU usage is ${CPU_USAGE}%" | mail -s "High CPU Alert" admin@company.com
fi
# 메모리 사용률 95% 이상 시 알림
MEM_USAGE=$(tail -1 archive/*/oswmeminfo.dat | awk '{print $4/$2*100}')
if [ $(echo "$MEM_USAGE > 95" | bc) -eq 1 ]; then
echo "ALERT: Memory usage is ${MEM_USAGE}%" | mail -s "High Memory Alert" admin@company.com
fi
3. 그래프로 시각화하기
# OSW 데이터를 CSV로 변환
awk '{print $1","$2","$3}' archive/*/oswcpu.dat > cpu_data.csv
# Excel이나 Grafana로 그래프 생성
# 시간대별 CPU/메모리 사용률 트렌드 분석
OSW vs 다른 모니터링 도구들 🥊
구분 OSW top/htop sar AWR
실시간 모니터링 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐ |
이력 분석 | ⭐⭐⭐⭐⭐ | ⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
오라클 특화 | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
설치 편의성 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
비용 | 무료! 🎉 | 무료 | 무료 | 라이선스 필요 |
결론: OSW는 "무료로 쓸 수 있는 가성비 최고의 모니터링 도구"! 💝
OSW 사용 시 꿀팁들 🍯
👍 Do (이렇게 하세요!)
- 적절한 수집 간격 설정
- # 일반적인 환경: 30-60초 ./startOSWbb.sh 30 # 고부하 환경: 10-15초 ./startOSWbb.sh 15
- 충분한 보관 기간 설정
- # 최소 7일, 권장 30일 ./startOSWbb.sh 30 720 # 30초 간격, 30일 보관
- 로그 로테이션 설정
- # crontab에 추가 0 1 * * * find /oracle/oswbb/archive -mtime +30 -delete
⚠️ Don't (하지 마세요!)
- 너무 짧은 수집 간격: 5초 이하는 시스템 부하 유발
- 로그 방치: 디스크 가득 참 주의!
- 분석 없는 수집: 모으기만 하고 분석 안 하기
문제 해결 - 이런 상황에는 이렇게! 🚨
Q: "OSW가 갑자기 멈췄어요!" 😱
# 1. 프로세스 확인
ps -ef | grep OSW
# 2. 디스크 공간 확인
df -h
# 3. 권한 확인
ls -la $ORACLE_HOME/oswbb
# 4. 재시작
./stopOSWbb.sh
./startOSWbb.sh
Q: "로그 파일이 너무 커요!" 📂💥
# 압축 보관
gzip archive/*/*.dat
# 오래된 파일 삭제
find archive/ -mtime +7 -name "*.dat" -delete
# 수집 간격 조정
./stopOSWbb.sh
./startOSWbb.sh 60 # 30초 → 60초로 변경
Q: "어떤 데이터를 봐야 할지 모르겠어요!" 🤷♂️
# 기본 체크 리스트
1. oswcpu.dat → CPU 사용률 확인
2. oswmeminfo.dat → 메모리 상태 확인
3. oswiostat.dat → 디스크 I/O 확인
4. oswnetstat.dat → 네트워크 상태 확인
5. oswtop.dat → 프로세스별 리소스 사용량
실제 현업에서 OSW로 해결한 케이스들 🏆
Case Study 1: 미스터리한 성능 저하 🕵️♂️
문제: 매주 화요일마다 오후 2시에 시스템 응답속도 10배 저하 OSW 분석: oswiostat.dat에서 화요일 오후 2시에 I/O wait 급증 발견 원인: 주간 풀백업과 증분백업이 겹치는 시간 해결: 백업 스케줄 조정으로 문제 해결! 🎉
Case Study 2: 메모리 릭 발견 💧
문제: 서버 재시작 후 며칠 지나면 OOM(Out of Memory) 발생 OSW 분석: oswmeminfo.dat에서 지속적인 메모리 사용량 증가 패턴 발견 원인: 애플리케이션의 메모리 릭 해결: 개발팀과 협업하여 메모리 릭 코드 수정! 🔧
Case Study 3: 네트워크 병목 🌐
문제: 특정 시간대에 쿼리 타임아웃 다발 발생 OSW 분석: oswnetstat.dat에서 네트워크 패킷 드롭 발견 원인: 스위치 포트 duplex mismatch 해결: 네트워크 설정 수정으로 문제 해결! 📡
마무리: OSW와 함께하는 안정적인 시스템 운영! 🎯
OSW는 정말 **"모르면 손해, 알면 득"**인 도구예요!
OSW의 핵심 가치
- 예방: 문제가 발생하기 전에 패턴 파악
- 진단: 문제 발생 시 정확한 원인 분석
- 최적화: 성능 튜닝을 위한 데이터 제공
- 안정성: 24/7 무중단 모니터링
시작해보세요!
- 오늘 당장 OSW 설치하기
- 1주일 데이터 수집 후 패턴 분석
- 임계값 알림 설정하기
- 정기적인 리포트 작성하기
무료로 이런 강력한 도구를 쓸 수 있다니! 정말 오라클의 선물 같은 도구죠! 🎁
혹시 OSW 사용하면서 궁금한 점이나 재미있는 케이스가 있으시면 댓글로 공유해주세요! 함께 배우고 성장하는 DBA 커뮤니티를 만들어요! 💪
다음 포스팅에서는 OSW 데이터로 성능 튜닝하는 고급 기법에 대해 다뤄볼게요! 기대해 주세요! 🚀✨
📚 유용한 참고 자료
- Oracle MOS: Doc ID 301137.1 (OSW 공식 가이드)
- OSW 분석 도구: OSWatcher Black Box Analysis
- 커뮤니티: Oracle Community Forums
- 교육: Oracle University OSW 과정