Да, это одна из изящных новых функций 11g. Oracle строит в RESULT_CACHE_MODE. Этот режим позволяет нам кэшировать результирующие наборы запросов.
Есть три способа инициализации этого.
1. Установить как переменную sys (изменить систему)
2. переменная текущего сеанса (изменить сеанс)
3. используйте подсказку в вашем конкретном запросе
По умолчанию этот параметр установлен на РУЧНОЙ. Вы можете проверить, выполнив этот запрос в сеансе SQL.
SQL> SELECT value FROM v$parameter WHERE name = 'result_cache_mode';
Мое личное предпочтение - сохранить значение по умолчанию MANUAL и подсказывать запрос, который я хочу кэшировать, поскольку у меня есть только несколько из них, которые я хочу кэшировать. Таким образом, я могу выбрать, какой запрос кэшируется, и ни один не будет кэширован по умолчанию.
Для кеширования определенного запроса вам нужно установить подсказку / * + RESULT_CACHE * / в вашем запросе. Вот пример.
SELECT /*+ RESULT_CACHE */ foo,
bar,
lorem
FROM dual
WHERE foo > 10;
Надеюсь, это поможет вам!
EDIT:
Вы также должны проверить эти системные переменные, чтобы увидеть, является ли размер приемлемым, и вы также можете увидеть и установить срок действия в системной переменной result_cache_remote_expiration
SELECT name, value, isdefault
FROM v$parameter
WHERE name LIKE 'result_cache%';