我的服务器是linux的,安装了oracle,现在建立一个crontab每天晚上导数据。
job如下:23 17 * * * nohup sh /home/oracle/job/emp.sh
1。在root用户下建,emp.sh代码为:
source /home/oracle/.bash_profile
cd /home/oracle/product/10g/bin 
exp userid=hlisdata/××××@hmis22 tables=ldcode file=table.dmp statistics=none log=table.log
报错: No such file or directoryne 9: /home/oracle/.bash_profile
2。在oracle用户下建,增加环境变量,如下:
export ORACLE_BASE=/home/oracle/
export ORACLE_HOME=/home/oracle/product/10g
export ORACLE_SID=hmis
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=/home/oracle/product/10g/lib:/home/oracle/product/10g/rdbms/publicCLASSPATH=.:/usr/java/jdk1.5.0/lib:/usr/java/jdk1.5.0/jre/lib:
cd /home/oracle/product/10g/bin 
exp userid=hlisdata/happy1001@hmis22 tables=ldcode file=table.dmp statistics=none log=table.log又报错:说ORACLE_HOME设置不对
谢谢!

解决方案 »

  1.   

    你的Oracle安装在什么目录下?我这边default 安装在
    /opt/oracle下,版本10.2.0所以我的设置:export ORACLE_HOME=/opt/oracle/product/10.2/db_1;运行没有问题
      

  2.   

    初步怀疑你的oracle的主目录不是/home/oracle/product/10g
    lz,你切换到oracle用户后用以下命令查一下并贴出结果来
    find . -name sqlplus
    这样我们就可以知道你的oracle安装在哪里了
      

  3.   

    安装在/home/oracle
    安装用户也为oracle
      

  4.   

    [oracle@baobiao01 ~]$ find . -name sqlplus
    ./product/10g/sqlplus
    ./product/10g/inventory/Templates/sqlplus
    ./product/10g/oc4j/j2ee/oc4j_applications/applications/isqlplus/isqlplus/WEB-INF/classes/oracle/sqlplus
    ./product/10g/bin/sqlplus
      

  5.   

    另外,我改成下面这样,也可以手动执行,但crontab仍旧报错:
     No such file or directory line 1: /home/oracle/.bash_profile附:emp.sh:. /home/oracle/.bash_profile
    CLASSPATH=.:/usr/java/jdk1.5.0/lib:/usr/java/jdk1.5.0/jre/lib:
    cd /home/oracle/product/10g/bin 
    exp userid=hlisdata/happy1001@hmis22 tables=ldcode file=table.dmp statistics=none log=table.log
      

  6.   


    export ORACLE_HOME/home/oracle/product/10.2/db_1;试试看
      

  7.   


    export ORACLE_HOME=/home/oracle/product/10.2/db_1; 
      

  8.   

    我机器上根本就没有这个路径:/home/oracle/product/10.2/db_1
      

  9.   

    不用这么搞。既然是对oracle操作,就应该用oracle帐户来作。
    操作这两步即可:
    1.su - oracle
    2.crontab -e我做个测试:
    [oracle@jk ~]$ pwd
    /home/oracle
    [oracle@jk ~]$ ls
    afiedt.buf  database  test.sh  tora
    [oracle@jk ~]$ cat test.sh
    #!/bin/bash
    export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1/
    u01/app/oracle/product/10.2.0/db_1/bin/exp oper/111@tl tables=test file=/home/oracle/table.dmp
    [oracle@jk ~]$ crontab -l
    21 14 * * * sh test.sh
    [oracle@jk ~]$ ls
    afiedt.buf  database  test.sh  tora
    [oracle@jk ~]$ ls
    afiedt.buf  database  table.dmp  test.sh  tora
      

  10.   

    楼上的这个好像可以呢!我应该是少了这么一句:#!/bin/bash对了,导多张表怎么写?是tables=(tab1,tab2)吗?