Выявление долго выполняющихся транзакций
Для выяснения того, какие SQL-операторы в экземпляре выполняются дольше всего и потребляют больше всего ресурсов, можно использовать представление V$SQL, как показано в следующем примере. В этом примере транзакции ранжируются по общему количеству затраченных на их выполнение секунд. Однако их также можно ранжировать и по количеству только использованных на их выполнение секунд ЦП.
SQL> SELECT hash_value, executions, 2 ROUND (elapsed_time/1000000, 2) total_time, 3 ROUND (cpu_time/1000000, 2) cpu_seconds 4 FROM (SELECT * FROM V$SQL 5 ORDER BY elapsed_time desc); HASH_VALUE EXECUTIONS TOTAL_TIME CPU_SECONDS ---------- ---------- ---------- ----------- 238087931 168 9.51 9.27 1178035321 108 4.98 5.01 . . . SQL>
После получения хеш-значения (HASH_VALUE) с помощью такого запроса, далее останется просто выяснить, как выглядит план выполнения данного оператора, который хранится в библиотечном кэше. Просмотреть план выполнения самых долгих SQL-операторов можно посредством запроса к представлению V$SQL_PLAN:
SQL> SELECT * FROM V$SQL_PLAN WHERE hash_value = 238087931;
Заключается ли проблема в Oracle
Только из-за того, что пользователи жалуются на медленную работу базы данных, не следует торопиться делать вывод о том, что проблема заключается в базе данных. В конце концов, база данных не работает сама по себе: она функционирует на сервере и, следовательно, на ее производительности могут сказываться ограничения по ресурсам и узкие места, присутствующие на этом сервере. Если не работающие с Oracle пользователи используют на этом сервере все критически важные ресурсы наподобие вычислительных ресурсов ЦП и дисковых ресурсов ввода-вывода, база данных может быть просто жертвой обстоятельств и тогда необходимо искать ответы за ее пределами. Именно поэтому для администраторов баз данных так важно знать, каким образом измерять общую производительность системы, в том числе производительность памяти, дисковой подсистемы хранения, сети и процессоров. В следующих разделах описываются системные ресурсы, на которые необходимо обращать особое внимание.