powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как получить имя клиентского приложения через SYS_CONTEXT?
17 сообщений из 17, страница 1 из 1
Как получить имя клиентского приложения через SYS_CONTEXT?
    #32139563
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Как получить имя клиентского приложения через SYS_CONTEXT?

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

Но мне надо через SYS_CONTEXT.
...
Рейтинг: 0 / 0
Как получить имя клиентского приложения через SYS_CONTEXT?
    #32140482
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я понял, его сначала надо выставить с помощью пакета 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
Как получить имя клиентского приложения через SYS_CONTEXT?
    #32140489
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Я так думаю, что там все уже есть, только недокументированное.
Например, как SYS_CONTEXT('USERENV','OS_USER').

Использование недокументированного, конечно, может аукнуться при переходе на следующие версии, но код обычно получается лаконичней.
...
Рейтинг: 0 / 0
Как получить имя клиентского приложения через SYS_CONTEXT?
    #32140521
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще говоря ты прав. Есть таблица: 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
Как получить имя клиентского приложения через SYS_CONTEXT?
    #32140643
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
А если я по-другому вопрос поставлю:
есть ли у кого-нибудь DDL на sys.v$session ?
...
Рейтинг: 0 / 0
Как получить имя клиентского приложения через SYS_CONTEXT?
    #32140723
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как получить имя клиентского приложения через SYS_CONTEXT?
    #32140887
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
То, что v$session - вьюха - я знаю.
Я имел ввиду, что хотелось бы увидеть скрипт create этой вьюхи...
Откуда она получает "PROGRAM"?
...
Рейтинг: 0 / 0
Как получить имя клиентского приложения через SYS_CONTEXT?
    #32140900
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скрипт ты не увидишь, потому что структура определена внутри программного обеспечения Oracle, а не в словаре данных.
...
Рейтинг: 0 / 0
Как получить имя клиентского приложения через SYS_CONTEXT?
    #32140936
SiDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Как получить имя клиентского приложения через SYS_CONTEXT?
    #32140943
Angel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V$FIXED_VIEW_DEFINITION, catalog.sql

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

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

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


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