我有一些查询会运行很长时间(20-30分钟)。如果同时启动大量查询,连接池将很快耗尽。
是否可以将长时间运行的查询包装到一个语句(过程)中,该语句将把通用查询的结果存储到临时表中,以终止连接,并在以后按需获取(轮询)结果?
编辑:查询和数据结构已优化,并且“检查索引和执行计划”之类的提示对我不起作用。我正在寻找一种存储(可能是)通用结果集的字节表示的方法,以供以后查阅。
最佳答案
我能想到的Oracle中最通用的方法是创建一个存储过程,该过程将结果集转换为XML,并将其作为CLOB XMLType存储在具有长期查询结果的表中。
您可以从通用结果集here中找到有关生成XML的更多信息。
SQL> select dbms_xmlgen.getxml('select employee_id, first_name,
2 last_name, phone_number from employees where rownum < 6') xml
3 from dual