问题描述:sqlloader导数时出现Loader-510 Physical record in data file xxx is longer than the maximum(1048576)告警.
数据库:oracle 19.9
系统:rhel 7.9 64位
场景描述:goldendb导出的数据导入oracle时出现以下告警.
1、问题重现
SQL*Loader-510: Physical record in data file (/ogg/dump/crm_log/202404/crm_log5.txt) is longer than the maximum(1048576)
SQL*Loader-2026: the load was aborted because SQL Loader cannot continue.
Table TBCS.crm_log_0925:
0 Rows successfully loaded.
0 Rows not loaded due to data errors.
0 Rows not loaded because all WHEN clauses were failed.
0 Rows not loaded because all fields were null.
Date conversion cache disabled due to overflow (default size: 1000)
2、异常原因
导入的文件中存在某个记录内容超过缓冲区最大限制,可以通过调整READSIZE参数将缓冲区增大,该值默认为1048576.
3、解决方案
-- 修改控制文件
$ vi /ogg/dump/crm_log/crm_log_20240926.ctl
OPTIONS(READSIZE=5242880)
LOAD DATA
CHARACTERSET 'AL32UTF8'
--CHARACTERSET 'ZHS16GBK'
INFILE '/ogg/dump/crm_log/202404/crm_log1.txt'
--continueif this(1:1)='-'
APPEND INTO TABLE tbcs.crm_log_0925
Fields terminated by '@@'
--Optionally enclosed by '`'
trailing nullcols
(
OID ,
USER_ID ,
WORK_ID ,
MOBILEPHONE ,
METHOD ,
REQ_JSON CHAR(3000),
ESR_JSON CHAR(3000),
ESR_CODE ,
ESR_DESC CHAR(3000) "replace(:ESR_DESC,'\\n',chr(10))",
REQ_TIME timestamp "yyyy-mm-dd hh24:mi:ss",
ESR_TIME timestamp "yyyy-mm-dd hh24:mi:ss",
CREATE_TIME timestamp "yyyy-mm-dd hh24:mi:ss",
LOG_CONTENT CHAR(1000000),
SOURCE ,
BUSINESS_PHONE ,
SERVERIP ,
SERVERPORT ,
SERVERMAC ,
SERVERIP ,
SERVERPORT ,
MENUID ,
H5_KEY
)
说明:添加OPTIONS(READSIZE=5242880)后,该告警不再发生.