문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
study:oracle:adv_owi_10g:intro [2009/07/21 13:45] starlits |
study:oracle:adv_owi_10g:intro [2009/07/22 00:42] (현재) starlits |
||
---|---|---|---|
줄 48: | 줄 48: | ||
==== 기타 중요 다이나믹 뷰 ==== | ==== 기타 중요 다이나믹 뷰 ==== | ||
+ | |||
+ | ^ V$SESSION | ||
+ | ^ V$ACTIVE_SESSION_HISTORY | ||
+ | ^ V$PROCESS | ||
+ | ^ V$TRANSACTION | ||
+ | ^ V$LATCH, V$LATCH_PARENT, | ||
+ | ^ V$LOCK, V$LOCKED_OBJECT, | ||
+ | ^ V$SQL | | | ||
+ | ^ V$LIBRARYCACHE, | ||
+ | ^ V$ROWCACHE, V$ROWCACHE_PARENT | ||
+ | ^ V$SGASTAT | ||
+ | ^ V$SEGMENT_STATISTICS | ||
+ | ^ V$SESS_TIME_MODEL, | ||
+ | ^ V$BH, X$BH | | | ||
+ | |||
==== Extended SQL Trace ==== | ==== Extended SQL Trace ==== | ||
+ | |||
+ | - SQL Trace 는 기본적으로 10046 진단이벤트를 통해 활성화된다. | ||
+ | - 4가지 레벨로 제어할 수 있다. | ||
+ | - SQL 성능진단을 위해서 SQL Trace 를 할 경우에는 반드시 레벨 12를 사용해야 한다. | ||
+ | |||
+ | == == | ||
+ | ^ 레벨 ^ 설명 ^ | ||
+ | ^ LEVEL 1 | SQL문장의 실행정보(Parse, | ||
+ | ^ LEVEL 4 | LEVEL 1 + 바인드 변수값 제공 | | ||
+ | ^ LEVEL 8 | LEVEL 1 + 대기정보 제공 | | ||
+ | ^ LEVEL 12 | LEVEL 4 + LEVEL 8 \\ SQL 문장의 실행정보와 바인드 변수 값, 대기정보를 제공 | | ||
+ | |||
+ | === 10046 진단이벤트 활성화 방법 === | ||
+ | - 현재세션에서 작업하고자 하는 경우 | ||
+ | - dbms_system을 이용해 다른 세션에 대해 Trace를 수행하는 경우 | ||
+ | - dbms_monitor 패키지를 이용하여 다른 세션에 대해 Trace를 수행하는 경우(10g 부터 제공) | ||
+ | - oradebug를 이용해 다른 세션에 대해 Trace를 수행하는 경우 | ||
+ | |||
+ | |||
+ | |||
==== oradebug 와 덤프(dump) ==== | ==== oradebug 와 덤프(dump) ==== | ||
+ | |||
+ | - 대기현상들을 분석하고 이해하는데 유용한 툴 | ||
+ | - oradebug는 DBA를 위한 가장 강력한 툴 | ||
+ | - **oradebug를 반드시 sysdba 권한으로 실행**하여야 한다. | ||
+ | - oradebug 명령어 확인(help) <code sql> | ||
+ | $ sqlplus / as sysdba | ||
+ | SQL> oradebug help | ||
+ | </ | ||
+ | - 더 자세한 정보는 [[dbms: | ||
+ | |||
==== AWR(Automatic Workload Repository) ==== | ==== AWR(Automatic Workload Repository) ==== | ||
+ | - 10g 부터 도입된 성능이력관리 기능이다. | ||
+ | - 수집된 데이터는 **DBA_HIST_XXX 뷰**를 통해 조회가 가능하다. | ||
+ | === AWR에서 수집되는 데이터들 === | ||
+ | == == | ||
+ | |||
+ | | Active Session History | | ||
+ | | 부하가 큰 문장 | | ||
+ | | 시스템 레벨과 세션 레벨에서 Time Model 통계 | | ||
+ | | 세그먼트와 기타 데이터베이스 객체에 대한 사용 통계치 | | ||
+ | | V$SESSTAT, V$SYSSTAT, V$SYSTEM_EVENT, | ||
+ | |||
+ | === 제한사항 === | ||
+ | - 오라클 장애는 일반적으로 Active Session은 초당 1회 이상, Active SQL은 초당 수십 회 이상 캡쳐해서 저장할 수 있어야 한다. | ||
+ | - AWR 은 데이터를 테이블로 저장하기 때문에 빈번한 데이터 저장이 어려울 수 있다. | ||
+ | - AWR에서 스냅샷이 저장되는 주기가 30분인 점을 생각하면 AWR로 특정 시간대의 장애문제를 해석하는 것이 어려울 수도 있다. | ||
===== OWI 데이타수집 ===== | ===== OWI 데이타수집 ===== | ||
==== Logoff Trigger ==== | ==== Logoff Trigger ==== | ||
+ | - 세션이 로그오프될때 V$SESSION_EVENT, | ||
+ | - 단순한 세션을 제외하고는 의미가 없다. | ||
+ | |||
==== SQL을 이용한 주기적인 수집 ==== | ==== SQL을 이용한 주기적인 수집 ==== | ||
+ | |||
+ | - 몇 분을 주기로 필요한 OWI 관련 데이터를 SQL문장을 통해 수집하는 기법 | ||
+ | - 수집주기가 길고, 성능문제 발생시에는 SQL 문장자체가 실행되지 않을 수 있어 정애분석용으로 사용할 수 없다. | ||
+ | |||
==== AWR(Automatic Workload Repository) ==== | ==== AWR(Automatic Workload Repository) ==== | ||
+ | - 오라클에 의해 자동적으로 성능데이터가 관리된다. | ||
+ | - SQL을 이용한 주기적인 수집보다는 훨씬 가볍고 안정적이지만 \\ 데이터를 저장하는 방식으로 인해 수집주기를 필요한만큼 짧게 할 수 없다. | ||
+ | |||
==== DMA(Direct Memory Access) ==== | ==== DMA(Direct Memory Access) ==== | ||
+ | - 오라클이 사용하는 SGA영역을 직접 Access 해서 필요한 데이타를 수집하는 방법 | ||
+ | - AWR과 달리 원하는 데이터를 원하는 주기로 저장할 수 있기 때문에 가장 유연하고 강력한 기법이다. | ||
+ | - Maxgauge 등 일부 성능 모니터링 툴에서 이 기법을 이용하여 프로그램을 제공하고 있다. | ||
줄 67: | 줄 140: | ||
===== 기타 ===== | ===== 기타 ===== | ||
+ | - 추가적으로 알아야 할 내용들이다. | ||
==== PL/SQL ==== | ==== PL/SQL ==== | ||
+ | |||
+ | === 아래의 패키지 사용법은 어느정도 알고 있어야 한다 === | ||
+ | |||
+ | - dbms_output | ||
+ | - dbms_rowid | ||
+ | - dbms_job 등 | ||
+ | |||
==== 스크립트들 ==== | ==== 스크립트들 ==== | ||
+ | === http:// | ||
+ | |||
+ | - show_space | ||
+ | - print_table | ||
+ | |||
+ | === 기타 스크립트 === | ||
+ | - my_sess_event.sql | ||
+ | - show_param.sql | ||
+ | - system_event.sql | ||
+ | - sesstat.sql | ||
+ | - undosize.sql |