尝试了在文件中source profile、. /root/.bashrc、写绝对路径等方法都不能执行sqlplus命令,最终找到两种解决办法

解决办法1:

1.在sh文件开头写入oracle环境变量

#!/bin/bash
PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export LANG=C
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

echo "aaa" > /tmp/a.txt
sqlplus 数据库账号/数据库密码 <<EOF
create table test0424 as select a.*,sysdate from table0424 a;
!echo "bbb" > /tmp/b.txt
EOF

2.查找sh命令绝对路径

[oracle@oradb ~]$ which sh
/bin/sh

3.定时任务

[oracle@oradb ~]$ crontab -e
5 9 * * * /bin/sh /home/oracle/test1.sh

解决办法2:

在定时任务中source环境变量文件

[oracle@oradb ~]$ crontab -e
8 8 * * * source /home/oracle/.bash_profile && /bin/sh -x /home/oracle/test1.sh
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐