Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在执行长时间运行的查询时,如何避免Oracle APEX 5.1中出现错误的网关超时?_Oracle_Oracle Apex_Oracle Apex 5.1 - Fatal编程技术网

在执行长时间运行的查询时,如何避免Oracle APEX 5.1中出现错误的网关超时?

在执行长时间运行的查询时,如何避免Oracle APEX 5.1中出现错误的网关超时?,oracle,oracle-apex,oracle-apex-5.1,Oracle,Oracle Apex,Oracle Apex 5.1,我已经安装了Oracle APEX 5.1版本5.1.4.00.08,以便与Oracle REST数据服务一起使用。如果要在数据库上运行SQL select查询所需时间超过一分钟的报告,则似乎已达到某个超时,并返回错误消息502 Bad Gateway,而不是报告。 但是,当页面重新加载时,查询仍然显示在数据库缓存中,因此APEX可以在以后加载报告 不幸的是,我还没有在APEX或其他任何地方找到一个设置,允许我在收到HTTP代码502的响应之前更改加载报告所需的等待时间。 我想问题可能出在ORD

我已经安装了Oracle APEX 5.1版本5.1.4.00.08,以便与Oracle REST数据服务一起使用。如果要在数据库上运行SQL select查询所需时间超过一分钟的报告,则似乎已达到某个超时,并返回错误消息502 Bad Gateway,而不是报告。 但是,当页面重新加载时,查询仍然显示在数据库缓存中,因此APEX可以在以后加载报告

不幸的是,我还没有在APEX或其他任何地方找到一个设置,允许我在收到HTTP代码502的响应之前更改加载报告所需的等待时间。
我想问题可能出在ORDS配置上,但我不确定。

我终于发现了错误!它既不是顶点也不是顶点。我使用的Apache服务器使用mod_代理将请求转发到APEX服务器。此时发生超时,可通过虚拟主机中的以下设置进行修复:

Timeout 5400
ProxyTimeout 5400

这个答案适用于通过具有防火墙的internet路径访问APEX应用程序的用户。如果查询运行时间超过15或20分钟,通常连接跨越的防火墙会忘记web浏览器和承载APEX应用程序的服务器之间的对话。这将导致错误,例如502坏网关错误。不幸的是,在这种情况下,我们无能为力。有些事情可以帮助减少这种情况发生的可能性

我支持一个APEX应用程序,它有一些怪物报告页面,根据用户输入的标准,这些页面有时会运行15分钟以上。我为交互式报告IR做了一些事情:

使用该软件包需要查询的可选许可证。但是请注意,如果用户修改了IR,查询可能会发生更改,而对于这些自定义运行,调优将没有帮助。 如果无法或不希望使用DBMS\U SQLTUNE,请插入查询提示。 我将报告查询页面上的日期范围限制为6个月或更短 在APEX设计模式下,可以在IR定义的“属性”文件夹中修改“操作”菜单,以关闭搜索栏和“操作”菜单的某些选项。如果您调整查询SQL,如果用户通过IR的“操作”菜单按钮添加或删除列,添加控件中断等选项,则查询可能不会使用优化设置。 添加JavaScript以删除单击IR标题的功能,并从“从顶点IR操作”按钮关闭排序选项。请注意,这可能需要更新,并应用APEX的升级。 这些将有助于防止大多数长时间运行的查询问题

操作按钮的设置示例:

下面是一个JavaScript示例,用于将函数和全局变量声明放入页面定义的JavaScript属性中,该声明对APEX 5.1.4版有效。它禁用单击列标题的功能,并从IR操作中删除排序选项→ 格式菜单:

.a-IRR-headerLink{ 指针事件:无!重要; 游标:默认!重要; } .a-IRR-sortWidget{ 显示:无!重要; } .a-IRR-sortWidget-actions{ 显示:无!重要; } .a-IRR-sortWidget-searchField{ 显示:无!重要; } .a-IRR-sortWidget-rows{ 显示:无!重要; } .a-IRR-sortWidget-search{ 显示:无!重要; }
不是ORDS配置方面的专家。。但这听起来像是一个优化问题。无法使用物化视图、索引、分区或其他任何方法来加速SQL查询?即使没有超时,我也很难想象有人愿意等待超过一分钟。也许查询可以改进,但不幸的是我缺乏更深层次的知识幸运的是,我能够解决超时问题,请参阅下面的答案。