Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / APEX и Global Temporary Table / 10 сообщений из 10, страница 1 из 1
30.09.2010, 09:01
    #36873558
Darkripple
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX и Global Temporary Table
добрый день. ситуация следующая:
в приложении активно используются global temporary table, с расчетом на то, что пользователи не будут видеть данные друг друга. но проверка показала, что APEX со своим apex_public_user-ом создает всего одну сессию БД на всех и, соответственно, разные пользователи работающие в приложении на разных машинах по сути пользуются одними данными.

как можно этого избежать? не хотелось бы отказываться от GTT или добавлять в них поля типа идентификатор apex-сессии.
как можно заставить апекса создавать каждый раз новую сессию к БД при коннекте очередного пользователя?
...
Рейтинг: 0 / 0
30.09.2010, 10:24
    #36873729
organiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX и Global Temporary Table
Darkripple,

Возможно Вам подойдет механизм коллекций в APEX.

Using Collections

APEX_COLLECTION

Пример реализации: Sample Applications -> Collection Showcase
...
Рейтинг: 0 / 0
30.09.2010, 10:41
    #36873784
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX и Global Temporary Table
Darkripple,

на самом деле APEX и создаёт каждый раз новую сессию. Только не при "коннекте очередного пользователя", а при каждом отображении и при каждой обработке страницы, а также при обращении к БД через AJAX. Так что проблемой для Вас будет сохранить данные во временной таблице от одного соединения к следующему.

Как уже сказали, используйте коллекции APEX.

PS: Интересно, как проводилась проверка, раз Вы увидели только одну сессию APEX_PUBLIC_USER.
...
Рейтинг: 0 / 0
30.09.2010, 12:07
    #36874089
Darkripple
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX и Global Temporary Table
коллекции апекса не очень подходят, так как среда работы будет не только апексовая, и хотелось создать единобезобразную схему запоминания параметров.
suPPLerна самом деле APEX и создаёт каждый раз новую сессию suPPLerИнтересно, как проводилась проверка, раз Вы увидели только одну сессию APEX_PUBLIC_USERпроверка проводилась так:
запускалось приложение на одной машине. делался запрос в БД
select SID,SERIAL#, CLIENT_INFO from v$session vv where username = 'APEX_PUBLIC_USER'
запоминался sid и serial. потом запускалось приложение на другой машине из под другого пользователся. повторялся запрос. sid и serial оставались теми же. поменялся только CLIENT_INFO.
потом запускалось совсем другое приложение. результат тот же.
то есть такое ощущение что он вообще держит одну сессию на всех.
suPPLerТак что проблемой для Вас будет сохранить данные во временной таблице от одного соединения к следующему в том то и дело, что проблема в обратном.
запускаю приложение на одной машине. вставляю в GTP пару записей. запускаю приложение на другой машине - и вывожу содержимое таблицы - те самые две записи.
...
Рейтинг: 0 / 0
30.09.2010, 12:15
    #36874103
Darkripple
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX и Global Temporary Table
не "GTP", а "GTT", опечатолся (:
...
Рейтинг: 0 / 0
30.09.2010, 18:57
    #36875491
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX и Global Temporary Table
Darkripple,

я упростил. :) APEX использует соединения типа shared server . Набор серверных процессов обрабатывает запросы набора клиентских процессов без постоянного соответствия 1-к-1 процесса из первого набора процессу из второго (как это работает в dedicated server connections ). Серверные процессы могут создаваться/уничтожаться во время работы экземпляра, если это необходимо. Поэтому принято не заморачиваться и считать, что при обращении к БД APEX открывает каждый раз новое соединение, stateless connection. Между этими соединениями нельзя рассчитывать ни на что, связанное с конкретным соединением: глобальные переменные пакетов, не-глобальные пользовательские контексты, сегменты GTT...

PS: Интересно, сколько у Вас серверных процессов?
Код: plaintext
select name, value from v$parameter where name like '%shared_servers';
...
Рейтинг: 0 / 0
01.10.2010, 03:03
    #36875943
killed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX и Global Temporary Table
suPPLer,

по-моему АПЕКС использует тот тип сервера, который настроен.
...
Рейтинг: 0 / 0
01.10.2010, 07:26
    #36876016
Darkripple
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX и Global Temporary Table
suPPLerPS: Интересно, сколько у Вас серверных процессов? запрос выдал
Код: plaintext
shared_servers    	 1 
suPPLerМежду этими соединениями нельзя рассчитывать ни на что, связанное с конкретным соединениемясно, вобщем засада-подстава. придется отказаться от GTT и юзать обычную таблицу со ссылкой на сессию..
...
Рейтинг: 0 / 0
01.10.2010, 18:39
    #36877847
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX и Global Temporary Table
посмотрите на это:

Using Virtual Private Database (VPD) in an HTML DB Application
http://www.oracle.com/technology/products/database/application_express/html/vpd.html

возможно, вам очень подойдет
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
18.09.2017, 09:22
    #39522587
shurikt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APEX и Global Temporary Table
Прикольно, дословный перевод этой темы у буржуев:
http://www.progtown.com/topic610853-apex-and-global-temporary-table.html
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / APEX и Global Temporary Table / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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