You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解除DBMS_SQLTUNE.REPORT_SQL_DETAIL生成的HTML报告截断

解决SQL Developer中DBMS_SQLTUNE生成的CLOB报告截断问题

环境信息

  • SQL Developer版本:19.1
  • Oracle版本:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

执行的查询

select dbms_sqltune.report_sql_detail(
  sql_id       => 'query_id',
  type         => 'ACTIVE',
  report_level => 'ALL') as report
from dual;

问题

执行上述查询后,生成的HTML格式报告以CLOB形式返回,但内容末尾被截断(显示为...),如何解除截断以查看完整HTML代码?

解决方法

方法1:调整SQL Developer的CLOB显示设置

  1. 打开SQL Developer,依次点击 工具 -> 首选项
  2. 在左侧导航栏选择 数据库 -> 高级
  3. 找到 CLOB读取缓冲区大小,将默认值(通常为8192)调大,比如设置为1048576(1MB)或更大,根据报告实际大小调整
  4. 点击 确定 保存设置,重新执行查询即可查看完整CLOB内容

方法2:将CLOB内容导出到文件

如果调整设置后仍无法完整显示,可直接将CLOB导出到本地文件:

declare
  l_clob clob;
begin
  select dbms_sqltune.report_sql_detail(
           sql_id       => 'query_id',
           type         => 'ACTIVE',
           report_level => 'ALL')
    into l_clob
    from dual;
  dbms_xslprocessor.clob2file(l_clob, 'YOUR_DIRECTORY', 'sql_report.html');
end;
/
  • 注意:YOUR_DIRECTORY需要是Oracle已创建的目录对象(可通过CREATE DIRECTORY命令创建,确保账号拥有读写权限)
  • 执行完成后,HTML报告会被保存到指定目录的sql_report.html文件中,直接打开即可查看完整内容

方法3:分块查询CLOB内容

如果以上方法都不方便,可通过分块读取CLOB来获取完整内容:

select dbms_lob.substr(report, 4000, 1) as part1,
       dbms_lob.substr(report, 4000, 4001) as part2,
       dbms_lob.substr(report, 4000, 8001) as part3
from (
  select dbms_sqltune.report_sql_detail(
           sql_id       => 'query_id',
           type         => 'ACTIVE',
           report_level => 'ALL') as report
  from dual
);
  • 根据CLOB实际长度,增加更多partN字段,每次读取4000字符(VARCHAR2的最大长度限制),之后手动拼接各部分内容即可得到完整HTML代码

内容的提问来源于stack exchange,提问作者Javi Torre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 09:50:31