Цитата:
Сообщение от
greench
А можно ли непосредственно в оракле получить userId по сессии.
Afaik непосредственно в Оракле без допиливания Аксапты (причем, видимо, на уровне ядра) - нельзя.
Цитата:
Сообщение от
greench
Т.е. вроде того "мы берем вьюху v$session, джойним к ней таблицу/вьюху Х и получаем userId для конкретной сессии "
Для этого нужно, чтобы информация о сессиях и соотв. пользователях отражалась в БД, а она сейчас вроде есть лишь в памяти АОСа в виде соотв.объектов/структур данных. Более того, как уже отмечалось, в общем случае в Аксапте нельзя идентифицировать пользователя (точнее, сессию) по SPID'у. Это связано с тем, что АОС держит у себя несколько подключений к БД, которые используются при необходимости той или иной сессией аналогично рабочим потокам в СУБД, обрабатывающим пользовательские запросы. В зависимости от нагрузки АОС может прибивать неактивные подключения к БД либо создавать новые - и все это при постоянно висящих пользовательских сессиях. Соотв., со стороны СУБД видны лишь данные, соответствующие подключениям к БД, поэтому идентифицировать по ним конкретную сессию на АОСе и, соотв., пользователя, в общем случае нельзя. Это было бы возможно, если бы АОС постоянно поддерживал в актуальном состоянии некую табличку в БД, где сопоставлял бы номер сессии (или код пользователя) и используемые ей в данный момент SPID'ы и обновлял бы эту табличку каждый раз, когда перечень SPID'ов, используемых той или иной сессией, изменяется.