Как включить функцию Result Cache - PullRequest
6 голосов
/ 18 февраля 2010

Я пытаюсь использовать Oracle Кэш результатов функции на 11.2.0 , поэтому я провел следующий тест:

CREATE OR REPLACE FUNCTION get_test_value
  RETURN NUMBER
  RESULT_CACHE
AS
BEGIN
  dbms_output.put_line( 'Called' );
  RETURN 0;
END;

SELECT get_test_value FROM dual;

Мой пример печатает Called каждый раз.
Я также пробовал некоторые другие примеры, найденные в сети, но кэш не используется.

Я пытался ALTER SYSTEM SET result_cache_max_size = 10485760;
Все еще не работает.

Я пытался ALTER SESSION SET result_cache_mode=FORCE; (что не нужно) - не помогло.

SELECT dbms_result_cache.status FROM dual; всегда возвращает DISABLED.

Что я делаю не так?

Ответы [ 2 ]

16 голосов
/ 18 февраля 2010

Какое издание вы используете? Функциональность Cache доступна только в Enterprise Edition, поэтому, если вы попробуете установить ее в Standard Edition, она не будет работать. Это в Руководство по лицензированию .

0 голосов
/ 06 мая 2013

Я собираюсь добавить эту информацию сюда, потому что я нашел ее полезной для решения моей аналогичной проблемы.

если вы получаете статус ОТКЛЮЧЕНО или БАЙПАС, помните

* Область памяти Resache Cache расположена в общем пуле, поэтому значение result_cache_max_size используется из размера общего пула. *

, поэтому проверьте следующие параметры

show parameter shared_pool_size
show parameter result_cache_max_size
show parameter result_cache_mode

Вы также можете попробовать

BEGIN
    dbms_result_cache.ByPass(False);
END;
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...