在项目中需要给同一台服务器的web用户配置环境变量执行oracle的sqlldr,把实现的步骤和碰到问题记录一下:
(1)把oracle目录下.profile文件对于数据库环境变量的设置拷贝到web用户的.profile文件中;
执行命令报错
$ sqlldr
sh: sqlldr: not found.
查看,发现web用户没有oracle_home目录的执行权限,无法进入到bin目录
(2)使用chmod 755 $oracle_home更改目录权限
执行命令报错
$ sqlldr
/usr/lib/hpux64/dld.so: Unable to find library 'libclntsh.so.10.1'.
Killed
核查,发现对$oracle_home/lib也没有访问权限
(3)使用chmod 755 $oracle_home/lib更改目录权限
执行命令报错
$ sqlldr
Message 2100 not found; No message file for product=RDBMS, facility=ULMessage 2100 not found; No message file for product=RDBMS, facility=UL$
经过一番核查,发现还需要对目录$oracle_home/rdbms/mesg目录赋予相应权限
最后终于可以正确执行命令sqlldr
总结:当需要给非oracle用户配置使用sqlldr时,不单需要配置环境变量,还需要把相关目录的访问权限赋予该用户。