728x90
# SNAPSHOT
1. snapshot 을 수동으로 하는 명령어
- exec dbms_workload_repository.create_snapshot;
- @?/rdbms/admin/awrrpt.sql
2. 악성 SQL 관리를 위해서 해야할 일
- 개발자 : 악성 SQL을 작성해서는 안된다
- DBA : 옵티마이저 테이블 통계정보를 잘 관리해야 한다
3. snapshot을 자동으로 하는 방법과 수동으로 하는 방법
- 수동 : exec dbms_workload_repository.create_snapshot;
- 자동(p12-10) : statistics_level = typical 또는 all 로 지정
4. statistics_level 파라미터 확인
- SQL> show parameter statistics_level
- baisc : 비활성화
- typical : snapshot 활성화
- ALL : 스냅샷에 튜닝정보를 추가함
- 변경 : alter system set statistics_level=all scope=both;
5. DB에 발생하는 성능상의 이슈를 확인하는 방법
- 오라클에서 제공하는 3가지 레포트를 이용하면 된다
- AWR report
1) 스크립트 : @?/rdbms/admin/awrrpt.sql (sysaux 에 존재함)
2) 특정 구간에 발생한 악성 SQL과 대기 이벤트를 확인할 때 사용
3) 즉 전반적인 성능상의 이슈를 확인하고자 할 때 보는 레포트
- ADDM report
1) 스크립트 : @?/rdbms/admin/addmrpt.sql
2) 해결방법(solution)을 오라클이 알려줌
- ASH report
스크립트 : @?/rdbms/admin/ashrpt.sql
6. AWR 이란
- 메모리의 성능정보를 기본적으로 한시간에 한번씩 수집해서 저장해놓은 저장소
- AWR은 sysaux 테이블 스패이스에 저장되어 있다
- AWR에 들어있는 성능정보는 8일간 저장된다
- 오라클 백그라운드 프로세서 MMON(Memory Moniotr) process는 한시간에 한번씩 메모리의 상태를 수집한다
문제125. 30분에 한번씩 자동으로 사진을 찍게 하고 싶고 30일동안 성능정보를 저장하게 하고 싶다면?
exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention =>30*24*60)
l 최대 10분까지 줄일 수 있다
l retention 은 분단위 : 30일 = 30*24*60 분
SQL> exec print_table('select * from dba_hist_wr_control'); ----------------- DBID : 3193357653 SNAP_INTERVAL : +00000 00:30:00.0 RETENTION : +00030 00:00:00.0 TOPNSQL : DEFAULT ----------------- |
문제126. statistics_level 파라미터가 무엇으로 셋팅되어있는지 확인하시오
SQL> show parameter statistics_level statistics_level string TYPICAL |
l baisc : 비활성화
l typical : snapshot 활성화
l ALL : 스냅샷에 튜닝정보를 추가함
문제127. statistics_level 파라미터를 ALL로 변경하시오
SQL> alter system set statistics_level=all scope=both; SQL> show parameter statistics_level statistics_level string ALL |
- SNAPSHOT 활용 - AWR Report
select count(*)
from sales a, sales b, sales c;
l 위의 쿼리를 이용해서 악성SQL 생성
SQL> exec dbms_workload_repository.create_snapshot; SQL> @?/rdbms/admin/awrrpt.sql SQL> @?/rdbms/admin/awrrpt.sql Current Instance ~~~~~~~~~~~~~~~~ DB Id DB Name Inst Num Instance ----------- ------------ -------- ------------ 3193357653 DBDB 1 dbdb ………………………………………………….. Specify the number of days of snapshots to choose from ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Entering the number of days (n) will result in the most recent (n) days of snapshots being listed. Pressing specifying a number lists all completed snapshots. Enter value for num_days: Listing all Completed Snapshots Snap Instance DB Name Snap Id Snap Started Level ------------ ------------ --------- ------------------ ----- dbdb DBDB 1 14 Jul 2014 14:39 1 2 14 Jul 2014 14:46 1 Specify the Begin and End Snapshot Ids ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Enter value for begin_snap: 1 Begin Snapshot Id specified: 1 Enter value for end_snap: 2 End Snapshot Id specified: 2 Specify the Report Name ~~~~~~~~~~~~~~~~~~~~~~~ The default report file name is awrrpt_1_1_2.html. To use this name, press Enter value for report_name: report04.html |
- report4.html 파일을 열어서 SQL statistics 로 이동
- SQL ordered by Elapsed Time 으로 이동
- Elapsed Time을 확인해보면 맨 elapsed time 이 높은 순서대로 정렬되어 있고 악성SQL이 무엇인지 SQL Text에 나온다
'빅데이터과정 > WORKSHOP 1 ' 카테고리의 다른 글
#22_140714_WSHOP_자동화된 유지관리 (0) | 2014.07.15 |
---|---|
#22_140714_WSHOP_테이블 통계정보 (0) | 2014.07.15 |
#22_140714_WSHOP_AUDIT_FINE-GRAINED AUDITION (0) | 2014.07.15 |
#21_140711_WSHOP_AUDIT (0) | 2014.07.15 |
#21_140711_WSHOP_최소 권한의 원칙 적용 (0) | 2014.07.15 |