powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ODCITableDescribe и FLUSH Shared_Pool
13 сообщений из 13, страница 1 из 1
ODCITableDescribe и FLUSH Shared_Pool
    #34901885
Lav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, коллеги.

Есть pipelined функция которая возвращает anydataset
Структура anydataset описывается в ODCITableDescribe , а выдача данных идет соответсвенно в ODCITableFetch .

Так вот, структура результирующего набора время от времени меняется. И если не вызывать ODCITableDescribe , то ODCITableFetch начинает формировать некорректный anydataset .

Насколько я понимаю когда оракл первый раз видит запрос наподобие:
Код: plaintext
select t.col1 from table(t_my.f) t
Он вызывает метод t_my.ODCITableDescribe
Во все остальные разы он пользуется закэшированным результатом.

О метод ODCITableFetch работает некорректно. Для того чтобы оракл еще раз вызвал ODCITableDescribe помогает ALTER SYSTEM FLUSH Shared_Pool , но этот вариант не совсем подходит, ибо он сбрасывает весь кэш, а это может пагубно отразиться на производительности базы в целом.

Так вот, внимание вопрос:

КАК ЗАСТАВИТЬ ORACLE (возможно хинтом) НЕ СОХРАНЯТЬ ЗАПРОС В КЭШ?
...
Рейтинг: 0 / 0
ODCITableDescribe и FLUSH Shared_Pool
    #34902102
Lav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так же еще помогает перекомпилировать TYPE, но на него есть завязки в пакетах, и они соответсвенно валятся в INVALID....
Вообщем полная труба.
...
Рейтинг: 0 / 0
ODCITableDescribe и FLUSH Shared_Pool
    #34903302
Фотография BW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Есть статья И.И. Мельникова "Oracle10g - мощь табличных функций для приложений хранилищ данных". Может это ваш случай? Статью можно прочесть здесь

2. Хорошо иметь тестовый пример, а то не до конца ясно, где возникают проблемы.

3. Указывайте в будущем версию Оракла.

С уважением,
bw.
...
Рейтинг: 0 / 0
ODCITableDescribe и FLUSH Shared_Pool
    #34903805
Lav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да это как раз то самый случай (из статьи), а версию пожалуйста:
Код: plaintext
1.
2.
3.
4.
Oracle Database 10g Enterprise Edition Release  10 . 2 . 0 . 3 . 0  - Prod
PL/SQL Release  10 . 2 . 0 . 3 . 0  - Production
"CORE	10.2.0.3.0	Production"
TNS for Linux: Version  10 . 2 . 0 . 3 . 0  - Production
NLSRTL Version  10 . 2 . 0 . 3 . 0  - Production

Но все-таки вопрос поставлен достаточно четко:
можно ли указать какой-нить хинт к запросу чтобы оракл в независимости ни от чего выполнил hard parsung(ну или как это называется)
...
Рейтинг: 0 / 0
ODCITableDescribe и FLUSH Shared_Pool
    #34903967
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вставить отличный (от других) комментарий в запрос?
...
Рейтинг: 0 / 0
ODCITableDescribe и FLUSH Shared_Pool
    #34904102
Lav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это понятно, только тогда через пару недель pool только этими запросами и забьется, а это не совсем хорошо.
...
Рейтинг: 0 / 0
ODCITableDescribe и FLUSH Shared_Pool
    #34904142
Dimka08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lav
можно ли указать какой-нить хинт к запросу чтобы оракл в независимости ни от чего выполнил hard parsung(ну или как это называется)
если найдете отпишитесь здесь пожалуйста
...
Рейтинг: 0 / 0
ODCITableDescribe и FLUSH Shared_Pool
    #34904156
Фотография BW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LavДа это как раз то самый случай (из статьи)
Что за нежелание подробно описать проблему?! Странно это.....
Случаем не пытаетесь сделать универсальный конвертор из DBMS_SQL курсора в sysrefcursor?

Lav
Но все-таки вопрос поставлен достаточно четко:
можно ли указать какой-нить хинт к запросу чтобы оракл в независимости ни от чего выполнил hard parsung(ну или как это называется)

hard parsing

От добавления комментария до пересбора статистики.

С уважением
bw.
...
Рейтинг: 0 / 0
ODCITableDescribe и FLUSH Shared_Pool
    #34904340
Lav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BWЧто за нежелание подробно описать проблему?! Странно это.....
Случаем не пытаетесь сделать универсальный конвертор из DBMS_SQL курсора в sysrefcursor?

Ну почему же нежелание.

Расказываю по порядку:
Есть некая метамодель, которая описывает где и какие данные хранятся. Так как данные хранятся в разных таблицах, которые динамически изменяют структуру, и разбросаны по всей схеме, с клиентского места достаточно тяжело собрать запрос(особенно если это отчет). Реализовав класс наподобии того, что описан в статье которую вы приводили выше, проблемы с разработкой отчетов и сложные запросы формируемые на клиентском месте исчезли.
Но не обошлось и без подвоха. Дело в том что метод describe отрабатывает один раз когда запрос кэшируется, а именно этот метод задает структуру датасета который возвращает класс, а если за это время метамодель изменилась, то структура датасета который заполняется в методе fetch может значительно отличаться от структуры созданной в методе вечь во время первого запуска запроса.

Собственно решил это все тем, что поместил все такие классы в пакет и при любом изменении метамодели делаю alter package xxx compile. Тем самым кэш вычищается, но хотелось просто уточнить возможно есть более цивилизованные способы решить эту проблему.
...
Рейтинг: 0 / 0
ODCITableDescribe и FLUSH Shared_Pool
    #34904348
Lav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опечатался

й в методе DESCRIBE во время первого запуска запроса.
...
Рейтинг: 0 / 0
ODCITableDescribe и FLUSH Shared_Pool
    #34904569
Фотография BW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lav BWЧто за нежелание подробно описать проблему?! Странно это.....
Случаем не пытаетесь сделать универсальный конвертор из DBMS_SQL курсора в sysrefcursor?

Ну почему же нежелание.

Расказываю по порядку:
Есть некая метамодель, которая описывает где и какие данные хранятся. Так как данные хранятся в разных таблицах, которые динамически изменяют структуру, и разбросаны по всей схеме, с клиентского места достаточно тяжело собрать запрос(особенно если это отчет). Реализовав класс наподобии того, что описан в статье которую вы приводили выше, проблемы с разработкой отчетов и сложные запросы формируемые на клиентском месте исчезли.
Но не обошлось и без подвоха. Дело в том что метод describe отрабатывает один раз когда запрос кэшируется, а именно этот метод задает структуру датасета который возвращает класс, а если за это время метамодель изменилась, то структура датасета который заполняется в методе fetch может значительно отличаться от структуры созданной в методе вечь во время первого запуска запроса.

Собственно решил это все тем, что поместил все такие классы в пакет и при любом изменении метамодели делаю alter package xxx compile. Тем самым кэш вычищается, но хотелось просто уточнить возможно есть более цивилизованные способы решить эту проблему.

Вы практически повторили первый пост, но дело ваше.
Как вариант добавить таблицу а-ля dual и включить ее в запросы, затем при изменении модели данных пересобирать статистику, как так.

Почему отчеты не сделать на view или даже materialized view? Или не создавать динамически новые типы?

С уважением,
bw.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
ODCITableDescribe и FLUSH Shared_Pool
    #39914526
askkas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такой же вопрос возник. Как можно заставить oracle не использовать кэш при вызове anytype, чтобы описание построилось заново?
...
Рейтинг: 0 / 0
ODCITableDescribe и FLUSH Shared_Pool
    #39914824
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам нужен hardparse при каждом обращении для получения resulset с динамической структурой.
Обеспечить можно:
- генерируя уникальный текст запроса (к примеру, задавая параметр(ы) литералом(ами))
- инвалидируя курсор (конкретный метод зависит от версии)

Но в любом случае овчинка выделки не стоит.
Динамические наборы проще получать в форме XML или JSON.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ODCITableDescribe и FLUSH Shared_Pool
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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