java调用shell连接db2,非root连接则提示db2:not found

whd20092009 2016-04-19 04:10:37
1.Java用ch.ethz.ssh2包下的类连接服务器,大致如下:
conn = new Connection(ip);
conn.connect();
conn.authenticateWithPassword(usr, psword);
Session session = conn.openSession();
session.execCommand(cmds);

2. java用root连接服务器,脚本里 su到数据库用户然后执行没问题
Db2Backup(){
su - ${ADMIN_NAME} -c "
db2 connect to ${DATABASE_NAME} user ${SCHAM_USER} using ${SCHAM_PASSWORD}
db2 \"import from ${LOCAL_DIR}/${fileName} of DEL commitcount 10000 replace into ${tabName}\"
"
}
现客户不希望用root去操作
3. 用数据库用户,连接服务器,脚本里直接写db2命令,提示“db2:not found”
Db2Backup(){
db2 connect to ${DATABASE_NAME} user ${SCHAM_USER} using ${SCHAM_PASSWORD}
db2 "import from ${LOCAL_DIR}/${fileName} of DEL commitcount 10000 replace into ${tabName}"
}

/opt/IBM/db2/V10.5/bin/db2 写全则报错“SQL10007N Message "-1390" could not be retrieved. Reason code: "3"”

各位大侠有什么经验或意见,不惜赐教,万分感谢!
...全文
1500 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
左手力 2016-07-08
  • 打赏
  • 举报
回复
引用 5 楼 whd20092009 的回复:
论坛不活跃啊,还是请教了 公司懂linuxdb2的同事搞定,环境变量相关的问题 步骤3加一句话, Db2Backup(){ . /home/db2idcs/.profile db2 connect to ${DATABASE_NAME} user ${SCHAM_USER} using ${SCHAM_PASSWORD} db2 "import from ${LOCAL_DIR}/${fileName} of DEL commitcount 10000 replace into ${tabName}" }
你好,我最近也遇到了这样一个问题。 我现在直接使用xsheel工具连接后可以执行db2的指令。但是用java执行一个的ls/pwd等命令可以,执行DB2的时候就包错了: ksh: db2: not found. 请教下:. /home/db2idcs/.profile 这个是你们那个环境的linux的安装目录吗?还是什么?
whd20092009 2016-04-22
  • 打赏
  • 举报
回复
论坛不活跃啊,还是请教了 公司懂linuxdb2的同事搞定,环境变量相关的问题 步骤3加一句话, Db2Backup(){ . /home/db2idcs/.profile db2 connect to ${DATABASE_NAME} user ${SCHAM_USER} using ${SCHAM_PASSWORD} db2 "import from ${LOCAL_DIR}/${fileName} of DEL commitcount 10000 replace into ${tabName}" }
大梦770 2016-04-20
  • 打赏
  • 举报
回复
db2profile的环境变量 不要用root用户,非root用户最好是实例用户或是与实例同组的用户。
whd20092009 2016-04-20
  • 打赏
  • 举报
回复
这个参数传进来的是db2实例用户,即java程序里用root连接服务器,shell里再切换到db2实例用户然后执行db2命令。 ========= 另外,我用db2实例用户直接用ssh登录后,手动执行shell,也是没有问题的, 感觉是java程序用db2实例用户连接服务器后哪个地方出问题了
LongRui888 2016-04-19
  • 打赏
  • 举报
回复
su - ${ADMIN_NAME} -c 这个命令是切换到root的把,这个和你安装时给db2设置的账号有关吧
whd20092009 2016-04-19
  • 打赏
  • 举报
回复
补充下,ssh到数据库服务器,用那个数据库用户在命令行里操作任何db2 都是没问题的

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧