Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как узнать имя удаленной машины при терминальной работе?  [new]
Rabbit from RU
Member

Откуда:
Сообщений: 59
На клиентских компьютерах запущены RDP-клиенты, терминальный сервер под Windows 2003 обращается к серверу Oracle.

Как можно из Oracle узнать имя компьютера, с которого запущена терминальная сессия, из которой в свою очередь инициирована сессия?

SYS_CONTEXT позволяет определить только имя компьютера, являющегося сервером терминала...

Винда хранит имя клиентской машины в переменных окружения пользователя, есть ли получить переменные окружения клиента БД в Oracle?
29 авг 06, 11:21    [3064892]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя удаленной машины при терминальной работе?  [new]
Whitedog
Member

Откуда:
Сообщений: 108
автор
Представление v$session, поле machine, содержит имя компьютера операционной системы.
Если не ошибаюсь, оно.
29 авг 06, 12:13    [3065318]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя удаленной машины при терминальной работе?  [new]
Whitedog
Member

Откуда:
Сообщений: 108
Там же есть поле terminal, содержит имя терминала.
29 авг 06, 12:15    [3065331]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя удаленной машины при терминальной работе?  [new]
Rabbit from RU
Member

Откуда:
Сообщений: 59
v$session не содержит имени клиентской машины терминала, максимум что можно почерпнуть из представления - узнать имя пользователя и имя сервера терминлов. А надо именно имя компьютера, с которого был осуществлен вход на сервер терминала.

Поле TERMINAL - всегда пустое, как я понимаю оно используется при распределенных транзакциях.
29 авг 06, 12:28    [3065427]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя удаленной машины при терминальной работе?  [new]
Alien99
Member

Откуда: Украина, Днепропетровск
Сообщений: 199
select terminal, machine from v$session where username='OLIK';

TERMINAL         MACHINE
---------------- ----------------------------------------------------------------
ASTLO            DTCOM\ASTLO
LUCHBD           DTCOM\LUCHBD

2 rows selected.
29 авг 06, 12:37    [3065515]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя удаленной машины при терминальной работе?  [new]
Rabbit from RU
Member

Откуда:
Сообщений: 59
Спасибо, я где-то недоглядел! Действительно терминал в V$SESSION содержит то что нужно, жаль что одноименное поле в SYS_CONTEXT не содержит....
29 авг 06, 13:23    [3065867]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя удаленной машины при терминальной работе?  [new]
azhukov
Member

Откуда:
Сообщений: 356
Rabbit from RU
Спасибо, я где-то недоглядел! Действительно терминал в V$SESSION содержит то что нужно, жаль что одноименное поле в SYS_CONTEXT не содержит....

Поле v$session.terminal совсем не связано с именем клиентской машины для Windows Terminal Services. А чтобы из оракла получить имя клиентской машины, нужно из клиентской программы на терминальном сервере прочитать переменную окружения CLIENTNAME, и передать ее, например через dbms_session.set_context
29 авг 06, 14:29    [3066360]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя удаленной машины при терминальной работе?  [new]
Rabbit from RU
Member

Откуда:
Сообщений: 59
azhukov
Поле v$session.terminal совсем не связано с именем клиентской машины для Windows Terminal Services. А чтобы из оракла получить имя клиентской машины, нужно из клиентской программы на терминальном сервере прочитать переменную окружения CLIENTNAME, и передать ее, например через dbms_session.set_context


Немного поэкспериментировал и действительно, из Windows XP поле TERMINAL устанавливается в имя удаленной машины, а вот из-под Linux оно пустое, хотя переменная CLIENTNAME устанавливается верно...Неужели нет 100% способа, опознать удаленную машину из Оракла? Без использования клиентской программы, только на сервере...
29 авг 06, 15:03    [3066667]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя удаленной машины при терминальной работе?  [new]
azhukov
Member

Откуда:
Сообщений: 356
Rabbit from RU
Неужели нет 100% способа, опознать удаленную машину из Оракла? Без использования клиентской программы, только на сервере...

Мне кажется, это вполне логично: с ораклом общается клиент с терминального сервера, и про его (WTS) клиентов оракл не должен знать, если только программа сама ему не расскажет.
29 авг 06, 18:01    [3068111]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить