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

Oracle 19c中sqlldr执行报错ORA-12514求无GUI工具解决建议

解决sqlldr ORA-12514错误的终端排查方案

针对你遇到的sqlldr连接报错ORA-12514,而sqlplus/tnsping正常的情况,可尝试以下终端操作:

  • 改用TNS别名替代Easy Connect字符串
    sqlldr对@主机名/SID格式的Easy Connect解析逻辑可能与sqlplus存在差异,直接使用tnsnames.ora中已验证的别名:

    sqlldr username/password@$ORACLE_SID control=rules.ctl log=backup_error_logs.txt data=output.csv errors=1000000
    
  • 显式指定服务名而非SID
    Oracle 19c监听器默认注册的是服务名,而非SID。先通过监听器命令查看已注册的服务名:

    lsnrctl services
    

    找到对应实例的服务名(通常是$ORACLE_SID或带域名的形式,如$ORACLE_SID.example.com),然后修改sqlldr连接串:

    sqlldr username/password@$HOSTNAME/服务名 control=rules.ctl log=backup_error_logs.txt data=output.csv errors=1000000
    
  • 确认命令中环境变量的正确展开
    先打印实际执行的sqlldr命令,验证$HOSTNAME和$ORACLE_SID是否正确替换:

    echo sqlldr username/password@$HOSTNAME/$ORACLE_SID control=rules.ctl log=backup_error_logs.txt data=output.csv errors=1000000
    

    若变量未展开,可手动替换为实际值再执行命令。

  • 使用sqlldr完整路径执行
    部分环境下sqlldr可能未正确读取Oracle环境变量,直接调用$ORACLE_HOME下的可执行文件:

    $ORACLE_HOME/bin/sqlldr username/password@$HOSTNAME/$ORACLE_SID control=rules.ctl log=backup_error_logs.txt data=output.csv errors=1000000
    
  • 查看监听器日志定位细节
    实时监听监听器日志,执行sqlldr后查看具体的连接请求信息:

    tail -f $ORACLE_BASE/diag/tnslsnr/$(hostname)/listener/trace/listener.log
    

    日志中会显示sqlldr请求的服务名,对比监听器已注册的服务即可定位不匹配点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:20:16