请告知关于在Oracle10g中通过DatabaseManager.fetch发行SQL时,不能获取结果的现象。

 
【回答】
在以下条件下,在Oracle10g中通过DatabaseManager.fetch发行了SQL时,有时不能获取结果。
很抱歉给您添了麻烦,确认现象时,请参阅【已确认现象的条件】,并进行调查以及判断解决方法。

【已确认现象的条件】
・数据库:Oracle10g(10.2.0.1)
・已安装patch04,让DatabaseManager#fetch进行高速化时
・使用DatabaseManager#fetch发行特定(*1)的SQL时
*1 如果使用DatabaseManager#fetch的【高速Fetch】,则将在发行的SQL上下插入用于分页的SQL。
   插入的SQL满足以下条件时,有可能发生此现象。
   ・WHERE语句的筛选条件中有SELECT语句。“WHERE bbb = (SELECT ...”
   ・有ORDER BY语句。
   ・有JOIN语句。 
※不是在此条件下一定会发生。

【原因】
本公司已确认在Oracle10g(10.2.0.4)中不发生此现象。
因此,我们认为这可能是Oracle10g(10.2.0.1)的SQL解释的问题。

【解决方法】
有两种解决方法。请考虑您的使用情况等,并判断采取哪种解决方法。
■解决方法1
・将通过选项功能模块被添加的【高速Fetch】选项设置为无效。
・设置方法
    在imart.xml的以下标签中添加<fast-fetch>标签,并在<fast-fetch>标签中设置true/false
      intra-mart/platform/service/application/database
   另外,省略设置时的默认设置是false。
  ・设置为无效时的缺点
    ・大量数据的Fetch时,有可能在JDBC中发生内存泄漏,并会导致OutOfMemory。
      (Oracle, PostgreSQL)
    ・不能获取数据库的LOB系列的列信息。
      (DB2)
    ・大量数据的Fetch速度很慢。
      (所有DB)
※ 请停止ServerManager, ServicePlatform后进行设置。
■解决方法2
・将Oracle10g更新为10.2.0.4及以后的版本。


-- 适用对象 ----------------------------------------------------------------
iWP/Web系统构建基础/WebPlatform/AppFramework
--------------------------------------------------------------------------------

FAQID:242
这篇文章有帮助吗?
0 人中有 0 人觉得有帮助
由 Zendesk 提供技术支持