crontab调用shell访问oracle问题

 

使用shell调用sqlplus访问oracle直接执行没问题。但是使用crontab调用时由于环境变量不生效,会不认为sqlplus为有效命令。



注:调用时使用的oracle用户
解决方法一:
在shell调用入口处增加如下环境变量:

Java代码
  1. ORACLE_BASE=/oracle;export ORACLE_BASE  
  2. ORACLE_HOME=$ORACLE_BASE/app/product/9.2 . 0 ;export ORACLE_HOME  
  3. NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANG  
  4. ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data;export ORA_NLS33  
  5. PATH=/usr/bin:sbin:/bin:/usr/bin:/usr/sbin:/opt/bin:/usr/local/bin:$ORACLE_HOME/bin:/usr/contrib/bin:$PATH   
  6. export PATH 
看起来,下面这四行就足够了。(或者决定于sqlplus 使用的复杂程度?)
ORACLE_BASE=/home/oracle; export ORACLE_BASE
ORACLE_HOME="/home/oracle/software/product/client/10.2"; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:/usr/local/ant/bin:$JAVA_HOME/bin:$PATH;
export PATH


解决方法二:
直接添加profile(对应你自己的机器的路径)到shell程序入口处。即增加Java代码

  1. . /oracle/.profile  


方法三:
在crontab指名运行的oracle用户名。

你可能感兴趣的:(crontab调用shell访问oracle问题)