2010-04-30 2 views
0

저장 프로 시저를 만들고 있습니다. 이 내부에는 다른 저장 프로 시저에 대한 호출이 많이 있습니다. 그들 중 무리가 있습니다.오라클은 모든 저장 프로 시저에 대해 실행 시간을 표시합니다.

모든 저장 프로 시저의 실행 시간을 포함 할 수있는 옵션이 있는지 궁금 해서요. 모든 함수 (시작 및 종료 시간, ior와 비슷한 항목).

아이디어는 내가 최적화해야하고 모든 부분을 터치해야하며, 가장 긴 실행 시간이 어디인지 확실하지 않기 때문에 약간 어렵습니다. 그리고 수정이 끝난 후에는 구멍이 더 짧거나 짧으면 구멍 가공을보고 싶습니다. SQL Plus를 사용하여 unix에서 프로 시저를 호출하면 로그가 없습니다. 내가 TOAD에서 호출하면 끝날 때까지 차단됩니다.

아이디어가 있으십니까?

저는 dba가 아니므로 데이터베이스에 대한 권한이 많지 않습니다. 저는 그냥 일반 사용자입니다.

답변

0

트랜잭션 프로 시저 (PRAGMA AUTONOMOUS_TRANSACTION;) 로깅 절차를 보았고 주 프로 시저에서 호출되었습니다. 그것은 funtime_log 테이블에 저장 :

  • 현재 시간 (벽시계),
  • 일련 번호,
  • 스레드 (세션) 아이디,
  • 및 텍스트 (절차의 예를 들어 이름입니다.)

이 방법을 사용하면 하나의 세션에서 모든 이벤트를 순차적 번호순으로 선택하고 시간이 가장 다른 부분을 볼 수 있습니다. 프로덕션 환경에서는이 기능을 사용하여 로깅을 사용하지 않도록 설정할 수 있습니다.

3

Oracle 11g를 사용하는 경우 the built-in Hierarchical Profiler을 확인해야합니다. 그것은 당신이 제안하는 것과 거의 똑같습니다. 불행히도 DBMS_HPROF에 대한 권한은 기본적으로 PUBLIC에 부여되지 않으므로 DBA에게 EXECUTE 권한을 부여하도록 요청해야합니다. 튜닝에 도움이되는만큼, 그들은 그들이 순응하기에 너무 행복 할 것이라고 확신합니다.

+0

예, DBA와 함께 사용하고 DBMS_HPROF를 사용하는 것이 좋습니다. 출력 파일 (plshprof)에 대한 분석 프로그램은 두 번의 실행을 구분하여 속도가 빨라지고 속도가 느린 것을 알려줍니다. 변경 사항을 튜닝 한 후에 어느 위치에 있는지를 결정하는 데 필수적입니다. –

관련 문제