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,方法没错,只不过好像都没有写 还需要设置环境变量。

String[] cmd = { "/bin/bash", "-c", "echo $ORACLE_HOME;echo $LD_LIBRARY_PATH;$ORACLE_HOME/bin/" + shellCommand };

final Process pid = Runtime.getRuntime().exec(cmd,new String[] { "ORACLE_HOME=/oracle/app/oracle/product/11.2.0.4/dbhome/",
"LD_LIBRARY_PATH=/usr/local/lib:/oracle/app/oracle/product/11.2.0.4/dbhome/lib:$LD_LIBRARY_PATH" });
Process pid = Runtime.getRuntime().exec(cmd
System.out.println("Process pid" + pid);
bufferedReader = new BufferedReader(new InputStreamReader(pid.getErrorStream()), 1024);

加上这几行就可以了。

全代码如下:

public static int executeShellsetHome(String shellCommand) {
int success = -1;
BufferedReader bufferedReader = null;
String[] cmd = { "/bin/bash", "-c", "echo $ORACLE_HOME;echo $LD_LIBRARY_PATH;$ORACLE_HOME/bin/" + shellCommand };
try {
System.out.println("执行 executeShellsetHome");
final Process pid = Runtime.getRuntime().exec(cmd,new String[] { "ORACLE_HOME=/oracle/app/oracle/product/11.2.0.4/dbhome/",
"LD_LIBRARY_PATH=/usr/local/lib:/oracle/app/oracle/product/11.2.0.4/dbhome/lib:$LD_LIBRARY_PATH" });
Process pid = Runtime.getRuntime().exec(cmd
System.out.println("Process pid" + pid);
bufferedReader = new BufferedReader(new InputStreamReader(pid.getErrorStream()), 1024);
pid.waitFor();
success = pid.exitValue();
if(0==success){
System.out.println("sqlldr 执行成功!");
}
else {
String line = null;
String errorMsg = "";
while (bufferedReader != null && (line = bufferedReader.readLine()) != null) {
errorMsg += line;
}
throw new Exception("执行" + shellCommand + "命令异常,异常信息" + errorMsg);
} } catch (Exception ioe) {
ioe.printStackTrace();
System.out.println("Exception");
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
} } }
return success;
}

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. luogu【P1024 一元三次方程求解】题解

    题目描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差 ...

  2. CodeForces 1187D Subarray Sorting

    Problem You are given an array \(a_1\),\(a_2\),-,\(a_n\) and an array \(b_1\),\(b_2\),-,\(b_n\). For ...

  3. Android使用命令行操作数据库

    所有的应用程序本地文件都存放在/data/data/目录下 C:\Users\nicole>adb shell * daemon not running. starting it now on ...

  4. django model 操作总结

    使用场景 一对一:在某表中创建一行数据时,有一个单选的下拉框(下拉框中的内容被用过一次就消失了).//两个表的数据一一对应 例如:原有含10列数据的一张表保存相关信息,经过一段时间之后,10列无法满足 ...

  5. Online Game Development in C++ 第五部分总结

    I. 教程案例框架描述 该套教程做了一个简单的汽车控制系统,没有用到物理模拟.用油门和方向控制汽车的加速度和转向,同时还有一些空气阻力和滚动摩擦力的设置增加了真实感.汽车的位置是通过加速度和时间等计算 ...

  6. Actor Roles 图示

    Udemy上的教程<Unreal Multiplayer Mastery - Online Game Development in C++>中对Actor Roles的总结非常直观到位,一 ...

  7. iOS9 3DTouch 之 Home Screen Quick Actions

    最后更新:2016-12-18 测试环境: Xcode8.1 一.前言 iOS9 已经过去一年了,3D Touch也在项目中实战过,但一直没有总结一下,现在新的项目也用到了3D Touch, 网上找了 ...

  8. Mysql中主键与索引

    摘自: https://www.cnblogs.com/wicub/p/5898286.html 一.什么是索引?索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没 ...

  9. Markdown Memo(memorandum)

    居中 html语法 <center>居中</center> 左对齐 <p align="left">左对齐</p> 右对齐 < ...

  10. 查看在linux中下载的图片

    1.安装   yum install lrzsz -y 2.找到文件所在的位置选中之后 3.点击那个蓝色的框框里面有一个 用ZMODEM下载 4.选择要保存的位置就可以查看了