거대한 Oracle Trace 파일이 있습니다. 이 파일을 제작 한 응용 프로그램은 1 시간 15 분 실행됩니다. 이 Tracefile에서 찾은 시간 4 한 시간에 조금씩 런타임을 선택합니다. 문제는 이러한 선택 항목이 최적화 프로그램에서 샘플링된다는 것입니다.oracle db trace의 동적 샘플 쿼리
SELECT /* OPT_DYN_SAMP */ /*+ ALL_ROWS IGNORE_WHERE_CLAUSE
NO_PARALLEL(SAMPLESUB) opt_param('parallel_execution_enabled', 'false')
NO_PARALLEL_INDEX(SAMPLESUB) NO_SQL_TUNE */ NVL(SUM(C1),:"SYS_B_00"),
NVL(SUM(C2),:"SYS_B_01")
FROM
(SELECT /*+ IGNORE_WHERE_CLAUSE NO_PARALLEL("LST_G") FULL("LST_G")
NO_PARALLEL_INDEX("LST_G") */ :"SYS_B_02" AS C1, CASE WHEN
"LST_G"."SENDUNG_TIX"=:"SYS_B_03" AND "LST_G"."LST_K"=:"SYS_B_04" AND
"LST_G"."LST_ART"=:"SYS_B_05" AND "LST_G"."FAK_TIX"=(-:"SYS_B_06") THEN
:"SYS_B_07" ELSE :"SYS_B_08" END AS C2 FROM "TMS1033"."LST_G" SAMPLE BLOCK
(:"SYS_B_09" , :"SYS_B_10") SEED (:"SYS_B_11") "LST_G") SAMPLESUB
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 56076 3.93 4.21 0 0 0 0
Execute 56076 1.98 1.80 0 0 0 0
Fetch 56076 1127.54 1122.77 222 46487004 0 56076
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 168228 1133.45 1128.79 222 46487004 0 56076
이것은 네 가지 중 하나입니다. 거의 같습니다. 나는 원래 문장을 발견하고 이것들이 Uniface-Service로부터 실행된다고 생각한다. 나는 Uniface가 어떻게 작동하는지 전혀 모른다. 나는 db 남자 일 뿐이다. 문제는 내가 옵티마이 저가이 문장을 재구성하는 이유가 없다는 것입니다. 원래 하나는 dynamic_sample
힌트를 사용하지 않습니다. 또한 나는 이것들을 발견했다, 나는 그렇게 생각한다, 원본 Statments는 추가로 추적 파일에있다.
select count(*)
from
lst_g where sendung_tix = 10330805990396 and lst_k = 'E' and lst_art = 'G'
and fak_tix = -4
왜 이러한 샘플링 된 문장이 있는지 확실하지 않습니다. 어떤 생각?
고마워요.
설명해 주셔서 감사합니다. – hat