Автор Тема: Имя компьтера  (Прочитано 6491 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн skAmZ

  • Коллежский регистратор
  • *
  • Сообщений: 18
  • Репутация: 0
Имя компьтера
« : °ЯаХЫм 04, 2008, 08:38:17 am »
Как получить имя компьтера?
При большом желание можно выдернуть из aud$ поле terminal, но только если работает аудит. Но ведь он сам то его получает как-то или заполнение этой таблицы происходит стороним процессом при включенном аудите?

Оффлайн TERRAPOD

  • Действительный статский советник
  • *****
  • Сообщений: 1598
  • Репутация: 25
  • Пол: Мужской
  • Texas Hold'em Freak
  • SkypeID: Andrei Hes
Re: Имя компьтера
« Ответ #1 : °ЯаХЫм 04, 2008, 12:27:39 pm »
Ба! Я ждал этого поста год!
create or replace function sf_get_comp_name
    return varchar2 as
    vv_id sys.v_$session.client_identifier%type := dbms_session.unique_session_id;
    vv_ret sys.v_$session.terminal%type;
begin
    select terminal
      into vv_ret
      from sys.v_$session
     where client_identifier = vv_id;

    return vv_ret;
exception
    when no_data_found then
        dbms_session.set_identifier(vv_id);
        return sf_get_comp_name;
    when others then
        raise;
end;
/

Оффлайн dEEp

  • Глобальный модератор
  • Тайный советник
  • *****
  • Сообщений: 2021
  • Репутация: 29
  • Пол: Мужской
Re: Имя компьтера
« Ответ #2 : °ЯаХЫм 04, 2008, 12:38:16 pm »
Ба! Я ждал этого поста год!

И сам же его создал? :-D

Там по-моему слеш последний лишний. или хз...
Подпись - есть нечто иное, как изъяснение общей сути человека, выраженное кем-то более великим, чем тот, кто написал его в каком-либо месте в любой форме изложения....

Оффлайн TERRAPOD

  • Действительный статский советник
  • *****
  • Сообщений: 1598
  • Репутация: 25
  • Пол: Мужской
  • Texas Hold'em Freak
  • SkypeID: Andrei Hes
Re: Имя компьтера
« Ответ #3 : °ЯаХЫм 04, 2008, 05:09:21 pm »
Ба! Я ждал этого поста год!

И сам же его создал? :-D

Там по-моему слеш последний лишний. или хз...

Угу, сам зарегился... создал... ответил...
Просто форум по ораклу у нас прям процветает  8-)
PS: слеш не лишний (:

Оффлайн skAmZ

  • Коллежский регистратор
  • *
  • Сообщений: 18
  • Репутация: 0
Re: Имя компьтера
« Ответ #4 : °ЯаХЫм 15, 2008, 08:05:39 am »
Спасибо за помощь) Думаю тебе интересно будет, что ошибки есть)
В таблице v_$session нет поля client_identifier... там есть client_info, может оно?
Так же ругается на SET_IDENTIFIER, говорит "Нет такого имени"))) в dbms_session не чего похожего не нашел)
create or replace function sf_get_comp_name
return varchar2 as
vv_id sys.v_$session.client_info%type := dbms_session.unique_session_id;
vv_ret sys.v_$session.terminal%type;
begin
select terminal into vv_ret from sys.v_$session where client_info = vv_id;
return vv_ret;
end;
/
С таким кодом, функция компилируется нормально, разумеется исключения не обрабатываются)
Кстати вот результат работы этой функции
SQL> select sf_get_comp_name from dual;
SF_GET_COMP_NAME
----------------------------------------------------------------------------

Я что-то не пойму где он берет значение vv_id для сравнения в запросе..
vv_id sys.v_$session.client_info%type := dbms_session.unique_session_id;

не уж то тут?
Ну и ещё, в таблице v_$session поля client_info пустые...

Оффлайн TERRAPOD

  • Действительный статский советник
  • *****
  • Сообщений: 1598
  • Репутация: 25
  • Пол: Мужской
  • Texas Hold'em Freak
  • SkypeID: Andrei Hes
Re: Имя компьтера
« Ответ #5 : °ЯаХЫм 16, 2008, 11:34:16 am »
Версия аракула какая?
А на dbms_session гранты раздай.
Цитировать
не уж то тут?
Именно!
PS: поля пустые, потому как чтоб не были пустыми надо об этом самому заботиться.

Оффлайн skAmZ

  • Коллежский регистратор
  • *
  • Сообщений: 18
  • Репутация: 0
Re: Имя компьтера
« Ответ #6 : °ЯаХЫм 16, 2008, 06:27:15 pm »
О каких грантах идет речь, я тестил под пользователем sys, без грантов он не скомпилил бы функцию без ошибок.
Версия аракула какая?
Oracle8i Personal Edition Release 8.1.5.0.0

Оффлайн TERRAPOD

  • Действительный статский советник
  • *****
  • Сообщений: 1598
  • Репутация: 25
  • Пол: Мужской
  • Texas Hold'em Freak
  • SkypeID: Andrei Hes
Re: Имя компьтера
« Ответ #7 : °ЯаХЫм 17, 2008, 02:07:38 am »
О, с восьмерки надо было и начинать - я писал для десятки.
Нету 8-го под рукой посмотреть, но уверен - примерно так же.

Оффлайн skAmZ

  • Коллежский регистратор
  • *
  • Сообщений: 18
  • Репутация: 0
Re: Имя компьтера
« Ответ #8 : °ЯаХЫм 17, 2008, 07:49:03 am »
Ладно, разберусь как-нибудь... вопрос то решенный, мне чисто для себя, для общего разхвития так сказать)) Общий смысл этой функции я понял. дальше разберусь) как руки дойдут выложу сдесь для 8-ки)
create or replace function sf_get_comp_namereturn varchar2 as
vv_id sys.v_$session.client_info%type := dbms_session.unique_session_id;
.....
begin
.....
end;
Это аналогично следующему?
create or replace function sf_get_comp_namereturn varchar2 as
vv_id sys.v_$session.client_info%type;
.....
begin
vv_id:= dbms_session.unique_session_id;
.....
end;
Я раньше не видел такого объявления переменных...

Оффлайн TERRAPOD

  • Действительный статский советник
  • *****
  • Сообщений: 1598
  • Репутация: 25
  • Пол: Мужской
  • Texas Hold'em Freak
  • SkypeID: Andrei Hes
Re: Имя компьтера
« Ответ #9 : °ЯаХЫм 17, 2008, 04:30:16 pm »
Идентично. Подозреваю даже, что байт-код будет одинаковый.