Oracle OCI 客户端缓存不工作

标签 oracle oracle-call-interface

我正在使用 Oracle Database 11g 版本 11.2.0.2.0 并尝试启用 oci 客户端缓存。它不起作用。 我为启用它所做的配置更改是 -

  1. 通过将服务器端参数“client_result_cache_size”设置为 10485760 (10 MB) 启用客户端结果集缓存
  2. 设置上述参数后重启oracle实例
  3. 通过执行语句 ALTER TABLE emp RESULT_CACHE (MODE FORCE) 添加表注释。我稍后通过查询用户表验证了该注释已应用。
  4. 在客户端(即 JDBC 驱动程序)启用语句缓存。
  5. 使用准备好的语句来执行查询,以便启动语句缓存。从驱动程序日志中,我验证了在第一个查询之后后续查询的执行使用了相同的语句句柄。

执行 3 次 select 准备好的语句查询后,我检查了 CLIENT_RESULT_CACHE_STATS$ View 。但此 View 没有产生任何行。

作为故障排除的一部分,我什至尝试将/*+ RESULT_CACHE */提示添加到查询中,但 View 没有给出任何结果。

从探查器 (flextracer) 中,我可以看到仍然对服务器进行 OCI 调用以获取选择查询的结果集。另外,在启用 sql 跟踪时,我可以从 tkprof 看到,每次执行查询都会增加在服务器上获取的行数,这表明 OCI 中的客户端结果集缓存不起作用。

我是否遗漏了任何步骤?

提前致谢。

最佳答案

我意识到我尝试启用的缓存功能在标准版中不可用。仅适用于企业版 - http://download.oracle.com/docs/cd/B28359_01/license.111/b28287/editions.htm#BABDJGGI

关于Oracle OCI 客户端缓存不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5217549/

相关文章:

oracle - 日期中带通配符的搜索查询

php - oci_bind_by_name : PHP Fatal error: Only variables can be passed by reference

c - text * 而不是 char *

php - 在 RHEL6 (PHP 5.3.3) 上安装 php-devel

php - 无论如何要使用 OCI 在 PHP 中预览准备好的 SQL 语句?

sql - 使用 CLOB 查询的 Oracle RAC 故障转移

sql - 如何从 View 中删除列

oracle - Oracle 中的数据加载

oracle - 查看从数据库中删除的删除表级联约束

oracle - 与 Dual 合并在 12c 中不起作用