Поведение, подобное тупику, в Oracle 12c для операторов select - PullRequest
0 голосов
/ 25 октября 2019

У меня есть склад Oracle 12c R2 (тщательно продуманная схема БД, которую создает наше приложение). Я запустил ИНСТРУМЕНТ (внутренний для нашего продукта), который выполняет несколько запросов для извлечения данных, и я вижу журналы, застрявшие в определенной точке. Похоже, что некоторый запрос к базе данных занимает слишком много времени, чтобы закончить. Мне нужно выяснить, что происходит.

Я попытался проверить запросы на лету с помощью следующего.

select x.sid
      ,x.serial#
      ,x.username
      ,x.sql_id
      ,x.sql_child_number
      ,optimizer_mode
      ,hash_value
      ,address
      ,sql_text
from   v$sqlarea sqlarea
      ,v$session x
where  x.sql_hash_value = sqlarea.hash_value
and    x.sql_address    = sqlarea.address
and    x.username       is not null;

Это дает мне несколько строк для одного запроса, давайте назовем его A (вторая строка и т. Д. На снимке ниже) иеще несколько строк для другого запроса B (3-я строка и т. д. на снимке ниже). Эти 2 запроса имеют объединения в таблице T. Теперь я не знаю, что это значит. Я попытался следующий запрос, чтобы найти все блокировки БД, но он просто возвращает очень несущественный результат.

Ниже приведен снимок результата БД для жабы для вышеуказанного запроса.

Toad result grid

Пожалуйста, помогите мне понять, что может означать такой результат из первого запроса. Выполнение ИНСТРУМЕНТА занимает около 6 часов и заканчивается успешно.

...