2014-02-21 4 views
3

У нас есть идентификатор приложения (предположим APP_ID) для подключения к базе данных и использования dbms_session.set_context() для установки фактического пользователя в системе (например: user1, user2) для VPD.Любой способ получить контекстную информацию о другом подключении db

Для проблем с производительностью в запросах мы хотим определить пользователя, выполняющего его (user1, user2). Есть ли способ получить dbms_session.get_context() соединения, предоставив sid?

  1. Предположим, DBA может его запустить.
  2. Я хочу, чтобы сбросить фактический идентификатор пользователя из контекста и его соединения (SID)
  3. Oracle базы данных

Я знаю, что приложение Логин или трассировка дБА или процедура для регистрации информации может быть создан .. Я просто хочу знать, есть ли какие-то из коробки?

ответ

0

Если у вас есть запуск DBA, вы должны иметь возможность получить доступ к V$SESSIONview. Простой запрос, как это даст вам все подключенные МОРС & их имена пользователей:

select 
     substr(sid,1,5) sid, 
     substr(serial#,1,5) ser_num, 
     substr(machine,1,6) box, 
     substr(username,1,10) username, 
     substr(osuser,1,8) os_user, 
     substr(program,1,30) program 
from v$session 
where 
and type='USER' 
order by username; 

Если вы просто ищете для фактических текущих запросов и пользователя/Sid, вы можете запустить что-то подобное описано здесь, в этом answer.

+0

Я думаю, что вопрос задает значение настраиваемого контекста, заданное другим сеансом, а не просто поиск регулярной информации сеанса. –

+0

@jonearles Возможно ли это в Oracle? – Durandal

+0

Я так не думаю. Но трудно сказать, если что-то подобное невозможно. –

Смежные вопросы