Expand Limit for SQL IN Clauses in Drill Through Reports

通过将 SQL IN 子句限制增加到超过 1000 个成员的默认值,解决穿透钻取报表错误。

如果穿透钻取报表失败,出现错误

'ERROR: relation <member name> does not exist'

出现故障的原因是 SQL IN 子句默认限制为 1000 个成员。Essbase 和 Oracle Database 存在此默认值。

注意:

Essbase 平台包含 <DOMAIN HOME>/bin 中的脚本,这些脚本可以定制 Essbase 功能的环境和行为。但是,如果对这些域环境或启动脚本进行更改,可能会有意外影响(包括启动失败)。Oracle 建议先在测试环境中进行更改。在编辑这些脚本之前,请始终:

  1. 使用 <DOMAIN HOME>/esstools/bin/stop.sh(在 Linux 上)或 <DOMAIN HOME>\esstools\bin\stop.cmd(在 Windows 上)停止 Essbase 托管服务器。

  2. <DOMAIN HOME>/bin 中,创建要编辑的文件的备份副本。例如:

    在 Linux 上

    cp setStartupEnv.sh setStartupEnv_bak.sh

    在 Windows 上

    copy setStartupEnv.cmd setStartupEnv_bak.cmd
  3. 仅按照 Oracle 的文档说明或与 Oracle 技术支持合作,小心地进行编辑。

  4. 使用 <DOMAIN HOME>/esstools/bin/start.sh(在 Linux 上)或 <DOMAIN HOME>\esstools\bin\start.cmd(在 Windows 上)重新启动 Essbase。检查启动是否正常完成。

要增加用于穿透钻取的 SQL IN 子句限制(如果外部数据库支持扩展限制),

  1. 停止 Essbase 服务(请参阅停止、启动和检查服务器)。
  2. 在部署 Essbase 的计算机上,导航到 <Domain Home>/bin(请参阅 Essbase 平台中的环境位置)。
  3. 创建启动脚本的备份副本 setStartupEnv.sh (Linux) 或 setStartupEnv.bat (Windows)。将其另存为其他名称;例如:cp setStartupEnv.sh setStartupEnv_orig.sh
  4. 打开 setStartupEnv.shsetStartupEnv.bat 进行编辑。
  5. 添加配置行以将限制提高到 1000 以上。

    Linux 示例 (setStartupEnv.sh):

    JAVA_OPTIONS="${JAVA_OPTIONS} -Ddtr.in.clause.limit=15000" export JAVA_OPTIONS

    Windows 示例 (setStartupEnv.bat):

    set JAVA_OPTIONS=%JAVA_OPTIONS% "-Ddtr.in.clause.limit=15000"
  6. 保存 setStartupEnv.shsetStartupEnv.bat
  7. 启动 Essbase 服务(请参阅停止、启动和检查服务器)。