2016-10-21 3 views
0

오라클 데이터베이스와 SQL에서 스크립트로 작성된 쿼리가 있습니다. 나는 각 쿼리의 실행 시간을 측정하고 싶습니다 그래서 인터넷에서 코드의이 부분을 발견오라클 측정 실행 시간

@directory\script.sql 

를하지만 나을 제공합니다

DECLARE 
    t1 NUMBER; 
    t2 NUMBER; 
BEGIN 
    t1 := DBMS_UTILITY.GET_TIME; 
    -- MY QUERY 
    t2 := DBMS_UTILITY.GET_TIME; 
    DBMS_OUTPUT.PUT_LINE(t2 - t1); 
END; 

'내 쿼리'로 단순히 쓰기 오류.

오류 보고서 : ORA-06550 : linia 8 kolumna 1 : PLS-00103 : 에게 기호가 발생했습니다 "@"다음 중 하나를 예상 : 은 (고토에 대한 최종 예외 종료를 선언 사건을 시작하면 루프 모드 null pragma raise 반환 선택 업데이트 중일 때 < < 계속 닫기 삭제 가져 오기 잠금 삽입 열기 롤백 저장 점 설정 SQL 실행 forall 병합 파이프 삭제 06550. 00000 - "행 % s, 열 % s : \ n % s"* 원인 : 일반적으로 PL/SQL 컴파일 오류입니다. * 작업 :

저는 데이터베이스에 익숙하지 않아 당신의 조언을 구하고 싶습니다. 감사.

+3

오류 텍스트를 추가 할 수 있습니까? –

+2

그리고 오류가 무엇입니까? StackOverflow 스파이 플레인은 오히려 고급이지만 현재 화면의보기를 차단하는 구름이 있습니다. –

+1

우리는 StackOverflow에서 일반적으로 마법사의 독자와 혼동합니다 ...하지만 우리는 아닙니다! 오류 메시지가 무엇인지 알려주십시오 .... –

답변

0

sql의 실행 시간을 찾으려면 SQL_ID를 가져 와서 아래 쿼리를 실행하십시오 (실행시 캐시에 있어야합니다.) 진단 팩이있는 경우 추세를 보려면이 쿼리의 역사 버전).

1) 세션 1의 인스턴스
2) 열기 2 개 세션 - 세션 식별자를 가져옵니다
    A) 세션 1의 브이 $ MYSTAT
3)에서 별개의 SID를 선택 - 당신이 원하는 SQL을 실행 세션 2의 경우)

4를 실행 - 첫 번째 세션
A)를 선택 SQL_ID의 SQL_ID 가져 오기
는 SID ####입니다 여기서 SID = ##### 브이 $ 세션에서 prev_sql_id from (2)

SQL_ID가 널이면

하고, 그렇지 prev_sql_id를 사용하여 상기 SQL_ID를 사용하여 아래에 연결 :

세트 LINESIZE 300
열 outline_sid 포맷 A8
열 outline_category 포맷 A30
열 sql_profile 포맷 A40
inst_id에 열 자식 형식 999
휴식 SQL_ID에 1

1 구별
사를 선택 건너 건너 뜁니다. inst_id,
sa.sql_id,
sa.child_number 아이,
sa.parsing_schema_name,
sa.plan_hash_value "해시",
sa.outline_category,
sa.sql_profile,
sa.sql_plan_baseline,
sa.users_executing,
sa.실행 "EXEC",
sa.buffer_gets/decode (sa.executions, 0, 1, sa.executions) "LOG_PER",
sa.disk_reads/decode (sa.executions, 0, 1, sa.executions) " PHY_PER "
라운드 ((sa.elapsed_time/디코딩 (sa.executions, 0, 1, sa.executions))/1000000, 6)"elapsedPer "GV $으로부터의 SQL
SA
여기서 sa.sql_id = ' & sqlid '
1에 의해 순서;