Эта статья предназначена для технических специалистов, работающих с Oracle: администраторов баз данных, инженеров производительности, разработчиков инструментов мониторинга и исследователей внутренних механизмов СУБД. Это готовый пример низкоуровневого исследования, который можно адаптировать под собственные задачи. Мы покажем, как связать привычные SQL‑данные из v$sesstat с их реальным расположением в памяти процесса, и на конкретном примере проиллюстрируем методику, применимую и к другим внутренним структурам Oracle. Это первая статья из серии, она посвящена Oracle 11g, довольно древней версии Oracle, далее мы увидим как изменялся подход корпорации Oracle к хранению внутренних структур статистики.
Итак, начинаем: устанавливаем клиентскую сессию в Oracle. Фиксируем её ключевые идентификаторы: sid равен 69, ospid — 2945.
Теперь нужно определить адрес этой сессии в памяти. Для этого выполняем запрос к системному представлению v$session
SELECT saddr FROM v$session WHERE sid = 69;