我想写一个shell  在shell中连接数据库 oracle  
shell 就是命令的集合 理论上直接写 SQL*plus CONNECT oradb  密码 。 就可以写了 
但是具体该怎么写 求大神~~!
谢谢!!!

解决方案 »

  1.   

    sqlplus -S /nolog <<EOF
        WHENEVER SQLERROR EXIT SQL.SQLCODE
        conn user/password
        这里是你的sql语句
    EOF这样就行了,把user/password换成你的用户名,密码。
      

  2.   

     cat aa.sh
    #!/bin/bash
    qlplus -s /nolog <<EOF
    WHENEVER SQLERROR EXIT SQL.SQLCODE
    conn moiats3/moiats3
    select sysdate from dual
    EOF: bad interpreter: 没有那个文件或目录
    报这个错
      

  3.   

    不好意思 : bad interpreter: 没有那个文件或目录
    是我的问题 但是又出问题
    sqlplus: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory
    唉 继续求大神~~
      

  4.   

     libsqlplus.so在哪里?把这个路径加到LD_LIBRARY_PATH环境变量里面
    例如
    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/u01/sqlplus
      

  5.   

    #!/bin/bash
    sqlplus -s /nolog <<EOF
    WHENEVER SQLERROR EXIT SQL.SQLCODE
    conn dzxd/dzxd
    select sysdate  from dual
    EOF没问题呀。你是不是把sqlplus写错了
      

  6.   

    $ cat bskmonitor.sh#!/bin/ksh
    #!/bin
    #cd ${HOME}
    #. .profile
    export ORACLE_HOME=/oracle/app/oracle/product/9.2.0
    PATH=$PATH:$ORACLE_HOME/bin
    user=yourname
    passwd=yourpass
    orasid=yourSID
    cd /yourpath
    >bosshead.txt
    recordnum=`sqlplus -s ${user}/${passwd}@${orasid} <<EOF
    set head off feedback off pagesize 0;
    Select sysdate from dual;
    exit;
    EOF`
      

  7.   

    --这里是 登录数据库 把结果放在recordnum里是吗?
    recordnum=`sqlplus -s ${user}/${passwd}@${orasid} <<EOF
    set head off feedback off pagesize 0;
    Select sysdate from dual;
    exit;
    EOF`
    --所有的sql语句卸载EOF里就可以了是吗?
      

  8.   

    我百度了一下发现以上大神的写法都是对的,问题处在我这边。
    嗯~~~
    谢谢以上各位。
    我要把查询出的结果写到文件中
    该如何 直接在末尾》file吗?
      

  9.   

    LOGFILE=mylog
    sqlplus -S /nolog <<EOF 1>>${LOGFILE} 2>&1
        WHENEVER SQLERROR EXIT SQL.SQLCODE
        conn user/password
        ...
    EOF给LOGFILE赋值你需要的文件名字即可。2>&1表示STDOUT和STDIN都写到LOG里面。