powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Возможно ли открытие форм без кэширования
7 сообщений из 7, страница 1 из 1
Возможно ли открытие форм без кэширования
    #38343489
oracletbm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Вопрос касается Oracle Developer 6i.

При открытии форм (отчётов) происходит кэширование их средствами ОС, как в Windows, так и в Linux.
При этом периодически возникает проблема обновления форм, если она открыта пользователями.
За счёт кэширования пользователи ещё неопределённое время могут работать со старой версией формы.
Это особенно проявляется при терминальном доступе.

Один из рассматриваемых вариантов решения проблемы основан на предположении, что данная ситуация предусмотрена в Oracle Developer 6i. Т.е. возможно есть какой-нибудь параметр или ключ, который указывает программе, что нужно запускать версию формы не из кэша, а непосредственно с диска.

Подскажите, пожалуйста, есть ли такая возможность или что-то типа этого в Oracle Developer 6i ?
Если есть, то как ей пользоваться.

Возможно предложите решение описанной проблемы какими-то другими средствами.

Спасибо
...
Рейтинг: 0 / 0
Возможно ли открытие форм без кэширования
    #38344023
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно.
По собственному опыту (Forms 6i):
Вариант 1: Есть формы в файловой системе Novell, запускаются пользователями с рабочих Win-станций (обычно XP, НЕ терминальный доступ). Обновление формы методом перезаписи файла не срабатывает, т.к. файлы залочены, пока их не покинут все пользователи. После замены файла все пользователи получают строго новую версию формы.
Вариант 2: Есть формы в файловой системе Linux, пользователи ходят через putty. Обновление формы методом перезаписи файла срабатывает, при этом старая версия формы у пользователей, которые в ней работают, почти тут же падает в формсовский core dump. Пользователи, входящие в форму после замены файла, получают строго новую версию формы.
А у вас как случается, не совсем понятно, уточните?
...
Рейтинг: 0 / 0
Возможно ли открытие форм без кэширования
    #38344059
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, в любом случае, можно попробовать поиграться еще с параметром FORMSxx_MMAP.
...
Рейтинг: 0 / 0
Возможно ли открытие форм без кэширования
    #38344371
oracletbm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ.

Есть сервер Linux с папкой с формами. Пользователи работают с сервером через терминальные сессии.
Обычно обновление происходит по расписанию ночью, когда пользователи не работают.
В некоторых форс-мажорных случаях требуется спешное обновление форм во время работы пользователей.
При этом при работе сервера под управлением Windows можно увидеть обращающиеся к расшаренному файлу сессии и поубивать их, потом обновить форму и всё ок.
Под Linux к сожалению не отображаются сессии, обращающиеся к форме. В результате после обновления не известно кто уже работает с новой версией формы, а кто продолжает работать в старой кэшированной версии формы.
При этом если к файлу обращались на момент обновления 2 и более пользователей, то даже после закрытия формы и открытия её периодически снова открывается версия формы из кэша - старая форма. Кэш в данном случае создаётся на каждой терминальной сессии.

Сейчас решение проблем идёт по нескольким направлениям:
1. Технический путь - найти ПО по управлению доступом к расшаренным файлам в Linux или для папки с формами использовать виртуальную машину под управлением Windows.
2. Программный путь - выяснить нельзя ли в Forms-ах каким-нибудь параметром указать, чтобы форма кадый раз при открытии обновлялась в кэше.

Меня интересует 2-ой (программный путь).
А что за параметр FORMSxx_MMAP и как с ним играться? Где он устанавливается?
...
Рейтинг: 0 / 0
Возможно ли открытие форм без кэширования
    #38345792
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько мне помнится, параметр FORMS60_MMAP (на *никсах, вроде, конфигурируется в файле default.env) отвечает за то, будет ли форма загружена в память полностью и обращения к fmx более не будет, или же runtime будет ее периодически подчитывать из файловой системы. Первый вариант ведет к неэффективному расходованию памяти, однако, пользователь может работать с формой в memory mapped файле, даже если fmx был перезаписан. Возможно, это он у вас дает такой эффект? О других вариантах кэширования файлов - мне неизвестно, может, еще что-то влияет.

По поводу идентификации клиентов, которые используют определенную форму - можно же использовать не только мониторинг локов на файлах файловой системе, а и установку информации о сессии через пакет dbms_application_info, тогда достаточно лишь глянуть v$session - и все. Ну, разумеется, требует также наличия доступа к исходникам :)
...
Рейтинг: 0 / 0
Возможно ли открытие форм без кэширования
    #38346210
Фотография mRdUKE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
How to Replace Oracle Forms Runtime Files in Production Environments 'On The Fly'

Unable to Replace .fmx Files 'On The Fly' During Forms Runtime (Doc ID 151618.1)

Cause
By default, Oracle Forms uses memory mapped file i/o during runtime to read the compiled executables ( fmx and mmx files). This reduces the amount of memory required on a system when more than one user is running the same Form. The memory mapped file i/o mechanism, however, has the side effect of locking the forms in use preventing a developer from replacing them with a new version at Forms Runtime.
Solution
Memory mapped file i/o can be switched off by setting the FORMSxx_MMAP environment variable e.g

Forms 4.5.x : FORMS45_MMAP = 0
Forms 5.0.x : FORMS50_MMAP = 0
Forms 6.0.x : FORMS60_MMAP = 0
Forms 9.0.x : FORMS90_MMAP=FALSE
Forms 10.1.2 : FORMS_MMAP=FALSE
Forms 11.1.1 : FORMS_MMAP=FALSE

To switch memory mapped file i/o back on either unset FORMSxx_MMAP or explicitly set FORMSxx_MMAP to 1 (for Forms 4.5 - 6i) or TRUE (for Forms 9i / 10g / 11g)

When the FORMSxx_MMAP value to 0 or FALSE, Oracle Forms by-passes the default memory mapping and writes the file to memory for each time accessed. Thus, the executables are left closed on the file system, allowing for updates even during Forms Runtime. The disadvantage is that this may increase memory usage and reduce performance because the whole file structure is loaded into memory. For production systems, it is recommended that FORMSxx_MMAP should be unset or set to a value of 1 or TRUE

Important Note:
Setting FORMSxx_MMAP to 0 or FALSE only works for forms and menu executables i.e fmx and mmx files. It is not designed to work for libraries i.e pll or plx files, as mentioned in the Note:208566.1 Does FORMSxx_MMAP Variable Works For .plx Files ?
But there is a solution that works also for libraries, and quite convenient for production systems as FORMSxx_MMAP is not involved, it is based on using different directories in FORMS_PATH:
You will find it in the NOTE:286762.1 How to Replace Forms Runtime Files in Production Environments 'On The Fly'

Please note the following values may be used for FORMSxx_MMAP
(There are others but these are the most common)
For FALSE any of the following are expected work: 0 / FALSE / NO
For TRUE any of the following are expected to work: 1 / TRUE / YES

Note that FORMS(XX)_MMAP is set in the .env file which is normally the default.env.


м.б. просто "убить" сессии пользователей и обновить формы?
...
Рейтинг: 0 / 0
Возможно ли открытие форм без кэширования
    #38346992
oracletbm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
Убить сессии со стороны Oracle не гарантирует, что форма разблокируется, т.к. в ряде случае форма сразу вылетает (это хорошо), а в ряде случаев просто выдаётся ошибка отсутствия коннекта, но форма-то при этом остаётся заблокированнойв ОС.

Убить коннекты к файлы и обновить файл - наиболее простой и правильный способ. Надеюсь его удастся реализовать (удастся найти ПО, чтобы из под Linux видеть ссылающиеся на общий файл коннекты и убить их).
Вариант с настройкой Forms рассматривается как гипотетическая возможность :-)

Не нашёл у себя файла default.env. А где он должен размещаться? Просто создать в текстовом редакторе и прописать в нём
FORMS60_MMAP = 0 ?
А если такого файла нет, то какое значение параметра FORMS60_MMAP действует по умолчанию? Может сразу считается отключенным или наоборот включенным?
Спасибо.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Возможно ли открытие форм без кэширования
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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