Я не могу понять, что означает SESSION_ID
в *_scheduler_job_run_details
.
Есть два значения, разделенные комой.Первый сильно меняется, второй меньше, например.посмотрите на приведенный ниже пример:
+------+------------+
| sid | session_id |
+------+------------+
| 6072 | 6072,8980 |
+------+------------+
Это выбирается с помощью запроса ниже:
SELECT s.sid
, j.SESSION_ID
FROM
v$session s
LEFT OUTER JOIN
(select SESSION_ID
, CAST(SUBSTR(SESSION_ID, 0, INSTR(SESSION_ID, ',')-1) as NUMBER) as ID1
, CAST(SUBSTR(SESSION_ID, INSTR(SESSION_ID, ',')+1, LENGTH(SESSION_ID) - INSTR(SESSION_ID, ',')) AS NUMBER) as ID2
from all_scheduler_job_run_details) j
ON j.ID1 = s.sid
OR j.ID2 = s.sid
;
Кажется, что первое число представляет sid
из v$session
, что соответствует Oracle docs - это Session identifier
, но SESSION_ID
из *_scheduler_job_run_details
в соответствии с это Oracle docs .Но это, похоже, не коррелирует с sql_text
из v$sql
- если я возьму sql_id
из v$session
для этого sid
, кажется, что этот сеанс был сеансом пользователя, который сделал некоторые вещи, а не мой job .
== РЕДАКТИРОВАТЬ ==
Я обнаружил, что sid
можно использовать повторно, поэтому он правильно соединяется.session_id
просто объединяется с более новым запросом, чем запрос, выполняемый заданием.Тем не менее, этот другой «идентификатор» означает что-нибудь еще?Может ли он ссылаться на какой-либо параметр более старого запроса, например, на serial #?