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

Oracle UTL_FILE生成文件以HEX 15为EOF字符致邮件附件异常求助

问题描述

本周一某邮件作业出现异常:通过UTL_FILE生成邮件正文文件,经mailx发送后,正文被转为.bin附件。排查确认,UTL_FILE生成的文件不再以0A(换行符)作为文件结束标识,而是以HEX 15字符结尾。

已排查信息
  • 已通过移除文件末尾的HEX 15字符实现临时修复,但未明确根因
  • 14日生成的文件完全正常,15日突发此问题,数据库团队及作业服务器均无周末变更记录
  • 使用的Oracle版本:Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.20.0.0.0
测试验证结果

在旧Solaris服务器与SLES 12服务器上运行测试存储过程,均出现相同问题,测试存储过程代码如下:

create or replace PROCEDURE test_nl_email_issue (FNAME in varchar2) IS
  pathnm           varchar2(30)  := 'NL_UTL';
  com_id           UTL_FILE.FILE_TYPE;
BEGIN
  com_id := UTL_FILE.FOPEN(pathnm,'test_' || FNAME || '.txt','w');
  IF UTL_FILE.IS_OPEN(com_id) THEN
    UTL_FILE.PUT_LINE(com_id,'Line 1');
    UTL_FILE.PUT(com_id,'Test Message New');
    UTL_FILE.FFLUSH(com_id);
    UTL_FILE.FCLOSE(com_id);
  END IF;
END;

不同环境测试结果:

  • 在Windows的SQL Developer中运行该存储过程,文件以0A结尾,邮件发送正常
  • 在Linux环境运行,文件以HEX 15结尾
  • 若将最后一行UTL_FILE.PUT改为UTL_FILE.PUT_LINE,则文件末尾同时添加0A与HEX 15
求助方向

现寻求该问题的根因分析,明确为何UTL_FILE在Unix/Linux环境下会生成以HEX 15结尾的文件,且突发此异常。

内容的提问来源于stack exchange,提问作者John Sulik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:11:04