Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как получить имя клиентского приложения через SYS_CONTEXT? / 17 сообщений из 17, страница 1 из 1
14.04.2003, 07:54
    #32139563
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского приложения через SYS_CONTEXT?
Как получить имя клиентского приложения через SYS_CONTEXT?

(v$session как-то получает его...)
...
Рейтинг: 0 / 0
14.04.2003, 08:28
    #32139574
nik_x
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского приложения через SYS_CONTEXT?
Если соединение через SQL/Net (читай DAO;ODBC;BDE...) то вряд-ли...
...
Рейтинг: 0 / 0
14.04.2003, 08:34
    #32139578
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского приложения через SYS_CONTEXT?
Это почему же?
У меня проги (на делфях, через DOA) прекрасно отображаются в v$session.

Но мне надо через SYS_CONTEXT.
...
Рейтинг: 0 / 0
15.04.2003, 08:49
    #32140482
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского приложения через SYS_CONTEXT?
Как я понял, его сначала надо выставить с помощью пакета DBMS_SESSION.
Сам никогда не использовал. А в доке написано следующее.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SYS_CONTEXT returns the value of attribute associated with the context
namespace. You can use this function in both SQL and PL/SQL statements. The
context namespace must already have been created, and the associated
attribute and its value must also have been set using the DBMS_SESSION.set_
context procedure. The namespace must be a valid SQL identifier. The
attributename can be any string, and it is not case sensitive, but it cannot exceed
 30  bytes in length.
...
Рейтинг: 0 / 0
15.04.2003, 08:59
    #32140489
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского приложения через SYS_CONTEXT?
Я так думаю, что там все уже есть, только недокументированное.
Например, как SYS_CONTEXT('USERENV','OS_USER').

Использование недокументированного, конечно, может аукнуться при переходе на следующие версии, но код обычно получается лаконичней.
...
Рейтинг: 0 / 0
15.04.2003, 09:44
    #32140521
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского приложения через SYS_CONTEXT?
Вообще говоря ты прав. Есть таблица: Table 4–1 Predefined Attributes of Namespace USERENV. И это вполне документировано.
Вопрос в том что том что нет такого параметра типа PROGRAM. Но есть CLIENT_INFO.
Код: plaintext
1.
2.
3.
4.
CLIENT_INFO Returns up to  64  bytes of user session information
that can be stored by an application using the DBMS_
APPLICATION_INFO package.
 64 


Может тебе есть смысл изучить пакет DBMS_APPLICATION_INFO и использовать его.
...
Рейтинг: 0 / 0
15.04.2003, 11:02
    #32140643
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского приложения через SYS_CONTEXT?
А если я по-другому вопрос поставлю:
есть ли у кого-нибудь DDL на sys.v$session ?
...
Рейтинг: 0 / 0
15.04.2003, 11:43
    #32140723
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского приложения через SYS_CONTEXT?
v$session - это вью. К нему не приминимы операции DDL.
Есть единственная DDL alter view <имя> compile.

Но и это тоже неприминимо к v$ - динамическим вью.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Oracle contains a set of underlying views that are maintained by the server and
accessible to the database administrator user SYS. These views are called dynamic
performance views because they are continuously updated while a database is
open and in use, and their contents relate primarily to performance.
Although these views appear to be regular database tables, they are not. These
views provide data on internal disk structures and memory structures. You can
select from these views, but you can never update or alter them.



You can
select from these views, but you can never update or alter them.
...
Рейтинг: 0 / 0
15.04.2003, 13:01
    #32140887
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского приложения через SYS_CONTEXT?
То, что v$session - вьюха - я знаю.
Я имел ввиду, что хотелось бы увидеть скрипт create этой вьюхи...
Откуда она получает "PROGRAM"?
...
Рейтинг: 0 / 0
15.04.2003, 13:08
    #32140900
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского приложения через SYS_CONTEXT?
Скрипт ты не увидишь, потому что структура определена внутри программного обеспечения Oracle, а не в словаре данных.
...
Рейтинг: 0 / 0
15.04.2003, 13:23
    #32140936
SiDen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского приложения через SYS_CONTEXT?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE OR REPLACE VIEW V_$SESSION ( SADDR, 
SID, SERIAL#, AUDSID, PADDR, 
USER#, USERNAME, COMMAND, OWNERID, 
TADDR, LOCKWAIT, STATUS, SERVER, 
SCHEMA#, SCHEMANAME, OSUSER, PROCESS, 
MACHINE, TERMINAL, PROGRAM, TYPE, 
SQL_ADDRESS, SQL_HASH_VALUE, PREV_SQL_ADDR, PREV_HASH_VALUE, 
MODULE, MODULE_HASH, ACTION, ACTION_HASH, 
CLIENT_INFO, FIXED_TABLE_SEQUENCE, ROW_WAIT_OBJ#, ROW_WAIT_FILE#, 
ROW_WAIT_BLOCK#, ROW_WAIT_ROW#, LOGON_TIME, LAST_CALL_ET, 
PDML_ENABLED, FAILOVER_TYPE, FAILOVER_METHOD, FAILED_OVER, 
RESOURCE_CONSUMER_GROUP, PDML_STATUS, PDDL_STATUS, PQ_STATUS
 ) AS select  "SADDR" , "SID" , "SERIAL#" , "AUDSID" , "PADDR" , "USER#" , "USERNAME" , "COMMAND" , "OWNERID" , "TADDR" , "LOCKWAIT" , "STATUS" , "SERVER" , "SCHEMA#" , "SCHEMANAME" , "OSUSER" , "PROCESS" , "MACHINE" , "TERMINAL" , "PROGRAM" , "TYPE" , "SQL_ADDRESS" , "SQL_HASH_VALUE" , "PREV_SQL_ADDR" , "PREV_HASH_VALUE" , "MODULE" , "MODULE_HASH" , "ACTION" , "ACTION_HASH" , "CLIENT_INFO" , "FIXED_TABLE_SEQUENCE" , "ROW_WAIT_OBJ#" , "ROW_WAIT_FILE#" , "ROW_WAIT_BLOCK#" , "ROW_WAIT_ROW#" , "LOGON_TIME" , "LAST_CALL_ET" , "PDML_ENABLED" , "FAILOVER_TYPE" , "FAILOVER_METHOD" , "FAILED_OVER" , "RESOURCE_CONSUMER_GROUP" , "PDML_STATUS" , "PDDL_STATUS" , "PQ_STATUS"  from v$session


Можно выставлять dbms_application_info.SET_CLIENT_INFO, потом считывать
...
Рейтинг: 0 / 0
15.04.2003, 13:25
    #32140943
Angel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского приложения через SYS_CONTEXT?
V$FIXED_VIEW_DEFINITION, catalog.sql

Но вообще-то для этих целей, как уже говорилось, используется dbms_application_info
...
Рейтинг: 0 / 0
15.04.2003, 14:03
    #32141032
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского приложения через SYS_CONTEXT?
Замечу что V_$SESSION это не то же самое что V$SESSION.
V_$SESSION сделан на основе V$SESSION, но исходную структуру и откуда берутся необходимые значения она не даёт.

А eNose инетересно имеено откуда изначально это всё берётся.
...
Рейтинг: 0 / 0
15.04.2003, 14:08
    #32141042
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского приложения через SYS_CONTEXT?
"x$ksuse", поле "ksusepnm". Дальше - глухо
...
Рейтинг: 0 / 0
15.04.2003, 14:17
    #32141060
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского приложения через SYS_CONTEXT?
Да, кстати, что такое x$ksuse - table или view - неизвестно. Кто владелец - тоже неизвестно (наверное, sys).

В sys.$obj этот объект отсутствует...
...
Рейтинг: 0 / 0
15.04.2003, 14:43
    #32141108
AI
AI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского приложения через SYS_CONTEXT?
Здесь говорилось, что v$ и x$ объекты - рабочие области оракловского софта, доступ к которым сделан в виде реляционных таблиц, но которые заполняются автоматически и которые нельзя изменить. Информация о них хранится в v$fixed_table - там и прописано, что есть вью или таблица. Естественно, что в словаре (obj$) информации об этих объектах нет.
...
Рейтинг: 0 / 0
15.04.2003, 14:55
    #32141134
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить имя клиентского приложения через SYS_CONTEXT?
Там написано лишь, что это table. И object_id дан = 4294951004.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как получить имя клиентского приложения через SYS_CONTEXT? / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]