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 建议先在测试环境中进行更改。在编辑这些脚本之前,请始终:
-
使用
<DOMAIN HOME>/esstools/bin/stop.sh(在 Linux 上)或<DOMAIN HOME>\esstools\bin\stop.cmd(在 Windows 上)停止 Essbase 托管服务器。 -
在
<DOMAIN HOME>/bin中,创建要编辑的文件的备份副本。例如:在 Linux 上
cp setStartupEnv.sh setStartupEnv_bak.sh在 Windows 上
copy setStartupEnv.cmd setStartupEnv_bak.cmd -
仅按照 Oracle 的文档说明或与 Oracle 技术支持合作,小心地进行编辑。
-
使用
<DOMAIN HOME>/esstools/bin/start.sh(在 Linux 上)或<DOMAIN HOME>\esstools\bin\start.cmd(在 Windows 上)重新启动 Essbase。检查启动是否正常完成。
要增加用于穿透钻取的 SQL IN 子句限制(如果外部数据库支持扩展限制),
- 停止 Essbase 服务(请参阅停止、启动和检查服务器)。
- 在部署 Essbase 的计算机上,导航到
<Domain Home>/bin(请参阅 Essbase 平台中的环境位置)。 - 创建启动脚本的备份副本
setStartupEnv.sh(Linux) 或setStartupEnv.bat(Windows)。将其另存为其他名称;例如:cp setStartupEnv.sh setStartupEnv_orig.sh - 打开
setStartupEnv.sh或setStartupEnv.bat进行编辑。 - 添加配置行以将限制提高到 1000 以上。
Linux 示例 (setStartupEnv.sh):
JAVA_OPTIONS="${JAVA_OPTIONS} -Ddtr.in.clause.limit=15000" export JAVA_OPTIONSWindows 示例 (setStartupEnv.bat):
set JAVA_OPTIONS=%JAVA_OPTIONS% "-Ddtr.in.clause.limit=15000" - 保存
setStartupEnv.sh或setStartupEnv.bat。 - 启动 Essbase 服务(请参阅停止、启动和检查服务器)。