java调用Oracle的sqlldr命令报错:Message 2100 not found; No message file for product=RDBMS, facility=ULMessage 2100 not found; No message file for product=RDBMS, facility=UL

手动执行sqlldr 可以正常执行,但放在java中 就会报上面的2100的错。

找错误找了两天。

希望能帮助并记录这个问题。

在这里整理解决办法(两种)(先说自己的,然后总结下百度到的)。

1.先说下我遇到的问题

先说结论:手动可以执行sqlldr,但再java中则需要设置环境变量。(本人不太懂Java,至少我这样设置后问题就解决了)

网上查到的 Runtime.getRuntime().exec(cmd) 这个行代码就可以执行sqlldr,方法没错,只不过好像都没有写 还需要设置环境变量。

  1. String[] cmd = { "/bin/bash", "-c", "echo $ORACLE_HOME;echo $LD_LIBRARY_PATH;$ORACLE_HOME/bin/" + shellCommand };
  2.  
  3. final Process pid = Runtime.getRuntime().exec(cmd,new String[] { "ORACLE_HOME=/oracle/app/oracle/product/11.2.0.4/dbhome/",
  4. "LD_LIBRARY_PATH=/usr/local/lib:/oracle/app/oracle/product/11.2.0.4/dbhome/lib:$LD_LIBRARY_PATH" });
  5. Process pid = Runtime.getRuntime().exec(cmd
  6. System.out.println("Process pid" + pid);
  7. bufferedReader = new BufferedReader(new InputStreamReader(pid.getErrorStream()), 1024);

加上这几行就可以了。

全代码如下:

  1. public static int executeShellsetHome(String shellCommand) {
  2. int success = -1;
  3. BufferedReader bufferedReader = null;
  4. String[] cmd = { "/bin/bash", "-c", "echo $ORACLE_HOME;echo $LD_LIBRARY_PATH;$ORACLE_HOME/bin/" + shellCommand };
  5. try {
  6. System.out.println("执行 executeShellsetHome");
  7. final Process pid = Runtime.getRuntime().exec(cmd,new String[] { "ORACLE_HOME=/oracle/app/oracle/product/11.2.0.4/dbhome/",
  8. "LD_LIBRARY_PATH=/usr/local/lib:/oracle/app/oracle/product/11.2.0.4/dbhome/lib:$LD_LIBRARY_PATH" });
  9. Process pid = Runtime.getRuntime().exec(cmd
  10. System.out.println("Process pid" + pid);
  11. bufferedReader = new BufferedReader(new InputStreamReader(pid.getErrorStream()), 1024);
  12. pid.waitFor();
  13. success = pid.exitValue();
  14. if(0==success){
  15. System.out.println("sqlldr 执行成功!");
  16. }
  17. else {
  18. String line = null;
  19. String errorMsg = "";
  20. while (bufferedReader != null && (line = bufferedReader.readLine()) != null) {
  21. errorMsg += line;
  22. }
  23. throw new Exception("执行" + shellCommand + "命令异常,异常信息" + errorMsg);
  24. }
  25.  
  26. } catch (Exception ioe) {
  27. ioe.printStackTrace();
  28. System.out.println("Exception");
  29. } finally {
  30. if (bufferedReader != null) {
  31. try {
  32. bufferedReader.close();
  33. } catch (IOException e) {
  34. e.printStackTrace();
  35. }
  36.  
  37. }
  38.  
  39. }
  40. return success;
  41. }

2.剩下的就是权限相关的问题

$ORACLE_HOME/rdbms/mesg/oraus.msg and oraus.msb 的权限  (也有说只需要更改oraus.msb 一个的权限即可 具体需自测)

还有可能就是将这两个文件 放到上一层目录,也就是$ORACLE_HOME/rdbms/ 这个下面,并给够权限

如果有写错的地方,请帮忙指正,有问题的一起讨论。

java调用sqlldr报错:Message 2100 not found的更多相关文章

  1. 在eclipse中用java调用python报错 Exception in thread "main" ImportError: Cannot import site module and its dependencies

    最近做项目需要用java调用python,配置了jython后,运行了例子代码: 获得一个元组里面的元素: import org.python.util.PythonInterpreter; publ ...

  2. java导出excel报错:getOutputStream() has already been called for this response

    对于java导出excel报错的问题,查了很多都说是在使用完输出流以后调用以下两行代码即可 out.clear(); out = pageContext.pushBody(); 但这也许是页面上输出时 ...

  3. 【jvm】linux 调用 jmap 报错Permission denied

    linux 调用 jmap  报错Permission denied 解决方案: 分别对java安装目录,java的bin目录以及jmap命令设置权限 chmod jdk1..0_79 chmod b ...

  4. Mybatis调用存储过程报错

    Mybatis调用存储过程 贴码 123456 Error querying database. Cause: java.sql.SQLException: User does not have ac ...

  5. R.java 文件内报错:Underscores can only be used with source level 1.7 or greater。

    R.java 文件内报错:Underscores can only be used with source level 1.7 or greater 网上查找后得知是Android工程图片资源命名的问 ...

  6. php调用webservice报错Class 'SoapClient' not found

    原文:php调用webservice报错Class 'SoapClient' not found php在调用webservice时,报告如下类似错误: ( ! ) Fatal error: Clas ...

  7. Java Web项目报错总结

    Java Web项目报错总结 1.java.lang.IllegalStateException java.lang.IllegalStateException Caused by:java.lang ...

  8. Java类型转化报错

    Java类型转化报错 报错如下: java.lang.ClassCastException:java.util.HashMap cannot be cast to java.util.List.

  9. 运行Java Web项目报错

    运行Java Web项目报错 今天,我启动服务,发现项目报错,并且是在打开登录界面时报错. 具体错误如下: org.apache.catalina.core.Standard WrapperValue ...

随机推荐

  1. bootstrap select下拉框模糊搜索和动态绑定数据解决方法

    此方法适合后台一次性返回所有数据好了废话不多说直接上代码: <!DOCTYPE html><html><head> <title>Bootstrap-s ...

  2. 冲刺周—The First Day

    一.FirstDay照片 二.项目分工 三.今日份燃尽图 四.项目进展 码云团队协同环境构建完毕 利用Leangoo制作任务分工及生成燃尽图 完成AES加解密部分代码 五.问题与困难 1.AES加解密 ...

  3. 基于Anaconda安装Tensorflow 并实现在Spyder中的应用

    基于Anaconda安装Tensorflow 并实现在Spyder中的应用 Anaconda可隔离管理多个环境,互不影响.这里,在anaconda中安装最新的python3.6.5 版本. 一.安装 ...

  4. Qt 之 ZIP开源库 QuaZIP

    2013-10-31 21:46 10856人阅读 评论(0) 收藏 举报  分类: Qt(12)  版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   一.简介     ...

  5. ora600

    4节点RAC:版本oracle11.2.0.4 22:20——23:40发生ora600 alert日志: Errors in file /u01/app/oracle/diag/rdbms/orcl ...

  6. accomplish、complete、finish、achieve和fulfill

    accomplish to succeed in doing something, especially after trying very hard vt. 完成:实现:达到 complete us ...

  7. 011-elasticsearch5.4.3【四】-聚合操作【二】-桶聚合【bucket】过滤、嵌套、反转、分组、排序、范围

    一.概述 bucketing(桶)聚合:划分不同的“桶”,将数据分配到不同的“桶”里.非常类似sql中的group语句的含义. metric既可以作用在整个数据集上,也可以作为bucketing的子聚 ...

  8. git总览

    git客户端官网:https://git-scm.com/ 下载对应版本安装 服务器安装git 安装依赖:yum install -y curl-devel expat-devel gettext-d ...

  9. 接口自动化之提取响应结果(raw、json)

    做接口测试时,我们一般会取得响应结果的部分值,来与预期结果对比,做断言 目录 1.响应结果类型 2.json响应结果的提取 3.raw响应结果的提取 1.响应结果类型 通过fiddler的respon ...

  10. 【mysql】select子句顺序

    sleect…from (1)where (2)group by (3)having (4)order by (5)limit