Тестирование Oracle 10G в Windows XP

Я не администратор базы данных. Тем не менее, я работаю над веб-приложением, которое полностью находится в базе данных Oracle (да, оно использует процедуры PL / SQL для записи HTML в clobs, а затем изрыгает шлепок в вашем браузере. Нет, это была не моя идея. Да, я подожду пока пойдешь плакать.).

У нас возникли проблемы с производительностью, и мне поручили найти узкие места и устранить их. Как мне измерить производительность Oracle и найти эти узкие места? Наш бесполезный системный администратор говорит, что Grid Control бесполезен и что ему пришлось полагаться на «свой опыт» и запросы к словарю данных и представлениям «v $».

Я хотел бы провести несколько тестов на моем локальном экземпляре Oracle и посмотреть, смогу ли я воспроизвести обнаруженные им проблемы, чтобы убедиться, что мои изменения действительно улучшают ситуацию. Может ли кто-нибудь указать мне, как это сделать?


person Jon Renaut    schedule 23.11.2009    source источник
comment
Ваш вопрос побудил меня найти профилировщик в IDE, который я использую. Спасибо!   -  person EMPraptor    schedule 23.11.2009
comment
Вы только начинаете с чистого листа, пытаясь выяснить, где находятся узкие места? или вы его вообще сузили?   -  person David    schedule 23.11.2009
comment
По сути, чистый лист - отправные точки, которые у меня есть, основаны на анализе данных системного администратора коллегами, и я не совсем верю, что они точны.   -  person Jon Renaut    schedule 23.11.2009


Ответы (4)


Неудивительно, что на эту тему написаны целые книги.

На самом деле вам нужно разделять и властвовать.

Во-первых, просто задайте себе несколько стандартных вопросов, связанных с здравым смыслом. Примером может служить медленное снижение производительности или недавнее сильное падение производительности.

После очевидного хорошей отправной точкой для вас было бы сузить круг вопросов, на которые потратить свое время - популярные запросы - хорошее начало для вас. Это даст вам определенные запросы, которые будут выполняться в течение длительного времени.

Если вы точно знаете, какие экраны в вашем интерфейсе работают медленно, и знаете, какие хранимые процедуры идут с этим, я бы добавил немного журнала. Простая DBMS_OUTPUT.put_lines с некоторой информацией о настенных часах в ключевых точках. Затем я бы запустил их в интерактивном режиме в SQLNavigator, чтобы увидеть, какая часть хранимой процедуры работает медленно.

Как только вы начнете сужать его, вы сможете оценить, почему конкретный запрос выполняется медленно. EXPLAIN_PLAN станет вашим лучшим другом для начала.

person David    schedule 23.11.2009
comment
Я добился определенных успехов в этом направлении. Я подозреваю, что со временем это приведет меня туда, где мне нужно быть. Я сообщу всем. - person Jon Renaut; 24.11.2009

Анализировать производительность базы данных с помощью Grid Control может оказаться непосильной задачей, и я бы посоветовал начать с более простого отчета AWR - вы можете найти сценарии для их создания в $ ORACLE_HOME / rdbms / admin на хосте db. Этот отчет будет ранжировать SQL, отображаемый в базе данных, по различным категориям (например, время ЦП, дисковый ввод-вывод, прошедшее время) и даст вам представление о том, где узкие места находятся на стороне базы данных.

Одним из преимуществ отчета AWR является то, что это сценарий SQL * Plus, который может быть запущен с любого клиента - он будет загружать HTML или текстовые файлы вашему клиенту.

person dpbradley    schedule 23.11.2009
comment
Я попробовал AWR, и результаты могли быть на древнегреческом. Думаю, мне нужно провести некоторое исследование, чтобы интерпретировать то, что он выплевывает. Спасибо. - person Jon Renaut; 23.11.2009

редактировать:

Думаю, есть пакет под названием DBMS_PROFILER, который позволяет вам делать то, что вы хотите. Я обнаружил, что моя IDE будет профилировать код PL / SQL, как и многие другие IDE. Вероятно, они используют этот пакет.

http://www.dba-oracle.com/t_dbms_profiler.htm

http://www.databasejournal.com/features/oracle/article.php/2197231/Oracles-DBMSPROFILER-PLSQL-Performance-Tuning.htm


редактировать 2:

Я только что опробовал Profiler в PL / SQL Developer. Он создает отчет об общем времени и появлении фрагментов кода во время выполнения и предоставляет местоположение кода в виде имени модуля и номера строки.


оригинал:

Я нахожусь в той же лодке, что и вы, в том, что касается сумасшедших страниц, сгенерированных PL / SQL.

Я работаю в небольшом офисе, и у меня нет программиста, особенно разбирающегося в расширенных функциях Oracle. У нас нет установленных методов измерения и повышения производительности. Но лучше всего, как я предполагаю, попробовать разные IDE PL / SQL.

Я использую PL / SQL Developer от Allaround Automations. У него есть функция тестирования, которая позволяет вам отлаживать ваш PL / SQL-код, и может иметь некоторые функции тестирования, которые я еще не использовал.

Надеюсь, ты найдешь лучший ответ. Я тоже хотел бы знать. :)

person EMPraptor    schedule 23.11.2009
comment
Я использую SQL Navigator 4, и, похоже, он имеет аналогичные функции. Сейчас пытаюсь понять, как им пользоваться. Спасибо за предложения. - person Jon Renaut; 23.11.2009
comment
В моей среде IDE было предложено сообщить, что ей нужно создать таблицу для хранения данных профилировщика. Я предполагаю, что вы сделали себя администратором баз данных на своем локальном экземпляре, но если у вас возникнут проблемы с этим, я бы проверил права, необходимые для настройки и запуска DBMS_PROFILER. oracleprofessional.blogspot.com/2004/09/ - person EMPraptor; 23.11.2009

«Я работаю над веб-приложением, которое целиком находится в базе данных Oracle (да, оно использует процедуры PL / SQL для записи HTML в clobs, а затем извергает шлепок в вашем браузере»)

Это продукт Apex? Это среда веб-приложений, которая теперь включена в стандартную часть базы данных Oracle (хотя технически она не выделяет CLOB).

Если это так, то в продукт / среду уже встроен целый набор инструментов (например, он ведет непрерывную двухнедельную историю активности).

person Gary Myers    schedule 23.11.2009
comment
Нет, насколько я понимаю, мои предшественники сделали свои собственные. - person Jon Renaut; 24.11.2009