Oracle — экспортировать время выполнения запроса

Я новичок в oracle (запуск Oracle 12 на сервере Ubuntu, использование разработчика SQL с компьютера Windows для управления им), и я пытаюсь измерить время выполнения для большого количества различных операторов/запросов.

Каков оптимальный и/или удобный способ массового выполнения большого количества запросов, а затем экспортировать время, необходимое для каждого из них. Сами результаты тривиальны, меня интересует только запись времени выполнения.

заранее спасибо


person user2092635    schedule 12.02.2014    source источник
comment
Я вижу, что у этого вопроса есть тег logfiles. Вы сейчас что-нибудь записываете?   -  person Dan Bracuk    schedule 12.02.2014
comment
Только с использованием внутреннего интерфейса разработчика SQL. Я отредактировал файл конфигурации и добавил: IncludeConfFile sqldeveloper-debug.conf AddVMOption -Dcom.methodr.loglevel=all. Это отображает некоторые внутренние процессы, но, похоже, не позволяет регистрировать продолжительность. Хотя тут может ошибся   -  person user2092635    schedule 12.02.2014


Ответы (1)


Вы можете использовать функцию DBMS_UTILITY.GET_TIME там, где вам нужно. Например. попробуйте что-то вроде этого:

SET SERVEROUTPUT ON

DECLARE
    my_time   PLS_INTEGER;
BEGIN
    my_time := DBMS_UTILITY.GET_TIME;

    SELECT ... FROM ...;  -- Query 1

    DBMS_OUTPUT.PUT_LINE('Elapsed time: ' || TO_CHAR(DBMS_UTILITY.GET_TIME - my_time) || ' hsecs');

    my_time := DBMS_UTILITY.GET_TIME;

    SELECT ... FROM ...;  -- Query 2

    DBMS_OUTPUT.PUT_LINE('Elapsed time: ' || TO_CHAR(DBMS_UTILITY.GET_TIME - my_time) || ' hsecs');

    -- ... and so on ...
END;
/

так далее...

В противном случае, если вы используете SQL*Plus, вы можете установить:

set timing on

и ты увидишь прошедшее время...

person Corrado Piola    schedule 12.02.2014