Как правило, вы можете отслеживать и анализировать с трех точек.Во-первых, SQL, в основном через представление v $ sql.Во-вторых, через сессию (начиная с v $ session).Наконец, через время (измерение, обычно на уровне системы или сеанса, в течение определенного периода времени).
Если выполняется конкретный оператор SQL, такой как SELECT * FROM table WHERE type =: val, тогдабаза данных быстро ее хеширует и проверяет, есть ли в кеше соответствующий оператор.Оператор должен соответствовать не только тексту, но и определенным параметрам среды (таким как пользователь синтаксического анализа, цель оптимизатора, типы переменных связывания, параметры NLS ...).
Если нет соответствующего оператора,затем база данных отправит его оптимизатору для составления плана запроса.Если есть совпадение, то будет использоваться план, уже определенный для этого оператора.
Поэтому я бы предложил, чтобы ваш первый шаг - взять SQL, который был выполнен как веб-приложением, так и из sqlplus иПосмотрите, использует ли он тот же план.Вы должны быть в состоянии найти в v $ sql заявление о заинтересованности и посмотреть, сколько в нем встречается случаев.в планах, чтобы увидеть, если они различаются (DBMS_XPLAN.DISPLAY_CURSOR).Если у вас есть только одно вхождение, тогда SQL используется совместно, и вам нужно использовать другой подход для изоляции выполнения веб-приложения от выполнения sqlplus.
Один из способов сделать это - отслеживать выполнениеSQL через сеанс веб-приложения и сеанс sqlplus (DBMS_MONITOR).Затем tkprof или аналогичные в файлах трассировки и найдите различия.
не может помочь вам сделать это через TOAD, но вы не ошибетесь в понимании базовых инструментов и методов.