첫째로, 당신은 당신의 SQL을 추적한다 (sql_id
가정 6b0z40gs9m759
를)
/u01/app/oracle/admin/MYDB11G/udump/mydb11g_ora_TrcSqlParag.trc
추적 파일 읽기 쉬운 일이 아닙니다, 우리가 필요
SQL> ALTER SESSION SET sql_trace=TRUE;
SQL> ALTER SESSION SET EVENTS 'trace[rdbms.SQL_Optimizer.*][sql:6b0z40gs9m759]';
[ SQL> ALTER SYSTEM SET EVENTS 'sql_trace [sql:&&sql_id] bind=true, wait=true'; ] -- or use this as alternative.
SQL> ALTER SESSION SET TRACEFILE_IDENTIFIER = "TrcSqlParag"; -- adds this text to your trace file and makes it more recognizable by you.
SQL> SHOW PARAMETER user_dump_dest -- trace files are produced in this directory
-- For 11g DB, you may easily query v$diag_info view to see your file destination :
SQL> SELECT value FROM v$diag_info WHERE name = 'Default Trace File';
-- You can identify the trace file for a specific session using the V$SESSION and V$PROCESS views :
SQL> SELECT p.tracefile FROM v$session s JOIN v$process p ON s.paddr = p.addr WHERE s.sid = &ses_id;
-- You may finish tracing whenever you want :
SQL> ALTER SESSION SET sql_trace=FALSE;
이의는 덤프 파일을 보자 tkprof utility
OS에서 읽으려면 :
$ cd /u01/app/oracle/admin/MYDB11G/udump/
$ tkprof mydb11g_ora_TrcSqlParag.trc TrcSqlParag_Translated1.txt explain=<username>/<pwd>@mydb11g table=sys.plan_table sys=no waits=yes
안녕하세요 Barbaros, ackoverflow 지침은 "감사합니다"라고 말하면서 주석을 달지 않는다고 말하면서, 나는 지금 당장 그것을 말하고 있습니다. 당신이 말한 것을 시험해 보았고 내 특정 세션에서 효과가 있었기 때문에 전체 응용 프로그램에서이 작업을 수행하려고합니다 ("세션 변경"대신 "시스템 변경"을하는 것으로 추측합니다). 데이터를 대조하고 마지막으로 내가 찾고있는 쿼리 응답 시간을 얻습니다. 이렇게 정교하게 작성된 세부 단계 (심지어 "맞춤화 된 단계"도)에 감사드립니다. 이틀 후에 실을 업데이트 할 것입니다. –
안녕하세요 Barbaros, "시스템 변경"으로 위의 내용을 시도했는데 문제가 발생했습니다. 추적 파일을 식별 할 수 없기 때문에 약간의 고통이있었습니다. stmt.executeQuery 바로 전에, 그리고 그 후에 한 번 전체 결과 집합을 반복 한 후에 Java 코드에 시스템 시간이 걸립니다. 그런 다음 각 단계마다 소요되는 시간을 인쇄합니다. 내가 추적에서 얻은 수치를이 수치에 매핑하고 숫자를 서로 연관시키는 데 어려움을 겪고 있습니다. 흥미로운 것을 발견하면 더 많이 시도하고 스레드에 추가 할 것입니다. –