Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / От куда parse, Oracle Forms / 6 сообщений из 6, страница 1 из 1
23.09.2009, 13:52
    #36212536
test_79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
От куда parse, Oracle Forms
Привет всем!

Oracle Forms 10, Oracle database 10.2.0.4.

Есть форма, на WHEN-BUTTON-PRESSED тригере висит запрос:
Код: plaintext
1.
2.
3.
SELECT COUNT (*) INTO :tmpc
FROM
 ASUPPP.CLAIM C   WHERE ZEX =  :zex  AND KOD_BURO =  :kod_buro;

Нажимаем кнопку 10 раз и получаем:
call count
------- ------
Parse 10
Execute 10
Fetch 10
------- ------
total 30
Misses in library cache during parse: 0

Для эксперимента переделываем запрос в цикле:
for i in 1..10 loop
SELECT COUNT (*) INTO :tmpc
FROM
ASUPPP.CLAIM C WHERE ZEX = :zex AND KOD_BURO = :kod_buro;
end loop;

Получаем:
call count
------- ------
Parse 1
Execute 10
Fetch 10
------- ------
total 21
Misses in library cache during parse: 0

Помогите, плиз, разобраться, почему в первом случае идет 10 раз soft parse, а во втором - один раз.
...
Рейтинг: 0 / 0
23.09.2009, 15:20
    #36212786
Я и ёжик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
От куда parse, Oracle Forms
test_79

Помогите, плиз, разобраться, почему в первом случае идет 10 раз soft parse, а во втором - один раз.
Во втором случае срабатывает умная PL/SQL машина знает, что можно использовать готовый курсор приложения, в котором уже выполнялся parse зфкыуэтого запроса, который не вытеснен из кэша курсоров сессии ( не путать с разделяемыми курсорами в Shared Pool). В первом случае, видимо из погони за уневерсализацией или еще по каким либо причинам такой механизм не реализован, с FORMS не знаком, возможно надо выполнить какие либо дополнительные настройки.
...
Рейтинг: 0 / 0
23.09.2009, 15:55
    #36212938
test_79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
От куда parse, Oracle Forms
Я и ёжик,
Во втором случае срабатывает умная PL/SQL машина знает, что можно использовать готовый курсор приложения, в котором уже выполнялся parse зфкыуэтого запроса, который не вытеснен из кэша курсоров сессии...


Я в начале тоже так подумал, и собственно изначальную форму в которой я заметил parsing я попросил программеров для чистоты эксперимента максимально упростить. Поэтому эта форма фактически содержит единственную кнопку с выше описанным запросом. Так вот в начале запуска этой формы я непосредственно выставляю session_cached_cursors=100 , чего за глаза должно хватать.
...
Рейтинг: 0 / 0
23.09.2009, 16:07
    #36212990
Я и ёжик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
От куда parse, Oracle Forms
test_79Я в начале тоже так подумал, и собственно изначальную форму в которой я заметил parsing я попросил программеров для чистоты эксперимента максимально упростить. Поэтому эта форма фактически содержит единственную кнопку с выше описанным запросом. Так вот в начале запуска этой формы я непосредственно выставляю session_cached_cursors=100 , чего за глаза должно хватать.
Если приложение само в явном виде выдает parse никакой session_cached_cursors сущственно не поможет (хотя несколько облегчит), посмотрите sqlplus, он всегда заново парсит запрос и ничем это не изменить. Forms судя по вашему примеру сделан так же, ну или какая то его подфункциональность.

Собственно так и описывается поведение Oracle Forms, в нижкприведенной статье, где он отнесен к приложениям типа 2a, по способу работы с SQL.

Переменные связывания и совместное использование курсоров: новые тенденции в СУБД Oracle9i
(Bind variables and cursor sharing – new directions in Oracle9i, By Bjorn Engsig, Miracle A/S)
(часть I)
...
Рейтинг: 0 / 0
23.09.2009, 17:10
    #36213178
test_79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
От куда parse, Oracle Forms
Я и ёжик,
...http://www.oracle.com/global/ru/oramag/april2003/dev_cursors.html#_Toc34113319...


Спасибо за ссылку, скорее всего так и есть.
Интересно, а можно ли поменять такое поведение, ну например, что-то подобное HOLD_CURSOR=YES но для Forms-a...
...
Рейтинг: 0 / 0
23.09.2009, 20:18
    #36213553
UK0IAI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
От куда parse, Oracle Forms
test_79Я и ёжик,
...http://www.oracle.com/global/ru/oramag/april2003/dev_cursors.html#_Toc34113319...


Спасибо за ссылку, скорее всего так и есть.
Интересно, а можно ли поменять такое поведение, ну например, что-то подобное HOLD_CURSOR=YES но для Forms-a...
Сейчас нет под рукой что бы проверить, посмотрите по точнее какой запрос исполяет оракле под управлением Формса. Как он выглядит и все такое. Потом тоже самое сделайте, но пусть у вас все делает базовый блок формы, а не процедура на pl/sql формса. Если я не ошибаюсь, то в случае с базовым блоком - со связанными переменными будет все в порядке. А вот PL/sql машина формса - я даже не уверен что Вы этот запрос сможете увидать. А если Вы перенесете логику на уровень сервера - то все будет в порядке. Это кстати один из аргументов в пользу переноса от Формса на сторону сервера процедур, требующих быстродействия и масштабирования.
...
Рейтинг: 0 / 0
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / От куда parse, Oracle Forms / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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