如何使用Shell脚本连接到用户定义的Oracle数据库?

如何使用Shell脚本连接到用户定义的Oracle数据库?,oracle,shell,Oracle,Shell,我有一个包含几个不同数据库的服务器。我试图创建一个脚本,询问用户要连接到哪个数据库,以及用户名和密码,然后连接到该数据库并执行其余操作 到目前为止,我写了以下内容: awk 'BEGIN {FS=":"}!/^#/ && !/^\*/ && !/^$/{print $1":"$2}' ${ORATAB} echo "Enter database instance name: " read sid ex

我有一个包含几个不同数据库的服务器。我试图创建一个脚本,询问用户要连接到哪个数据库,以及用户名和密码,然后连接到该数据库并执行其余操作

到目前为止,我写了以下内容:

awk 'BEGIN {FS=":"}!/^#/ && !/^\*/ && !/^$/{print $1":"$2}' ${ORATAB}

echo "Enter database instance name: "
read sid

export ORACLE_SID='echo $sid'
export ORACLE_HOME=`grep -i "^${ORACLE_SID}:" /etc/oratab | grep -v "^#" | cut -d ':' -f 2,2 `
export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/local/bin:/etc
export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${LD_LIBRARY_PATH}

sqlplus /nolog << EOF
CONNECT / as sysdba
select object_type,status,count(1) from dba_objects where owner='abc' and status='INVALID' group by object_type,status;
EXIT;
EOF
awk'BEGIN{FS=“:”}!/^#/&&!/^\*/&/^$/{print$1:“$2}”${ORATAB}
echo“输入数据库实例名称:”
读取sid
导出ORACLE_SID='echo$SID'
export-ORACLE_HOME=`grep-i^${ORACLE_SID}:“/etc/oratab | grep-v^ |”| cut-d':'-f2,2`
导出路径=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/local/bin:/etc
导出LD_库路径=${ORACLE_HOME}/lib:${LD_库路径}

sqlplus/nolog经过多次尝试后,这一方法成功了

awk 'BEGIN {FS=":"}!/^#/ && !/^\*/ && !/^$/{print $1":"$2}' ${ORATAB}
    
    echo "Enter database instance name: "
    read sid
    
    export ORACLE_SID=$sid
    export ORACLE_HOME=`grep -i "^${ORACLE_SID}:" /etc/oratab | grep -v "^#" | cut -d ':' -f 2,2 `
    export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/local/bin:/etc
    export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${LD_LIBRARY_PATH}
    
    sqlplus /nolog << EOF
    CONNECT / as sysdba
    select object_type,status,count(1) from dba_objects where owner='abc' and status='INVALID' group by object_type,status;
    EXIT;
    EOF
awk'BEGIN{FS=“:”}!/^#/&&!/^\*/&/^$/{print$1:“$2}”${ORATAB}
echo“输入数据库实例名称:”
读取sid
导出ORACLE_SID=$SID
export-ORACLE_HOME=`grep-i^${ORACLE_SID}:“/etc/oratab | grep-v^ |”| cut-d':'-f2,2`
导出路径=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/local/bin:/etc
导出LD_库路径=${ORACLE_HOME}/lib:${LD_库路径}

sqlplus/nolog您可能希望与DBA进行检查,很可能他们已经构建了脚本来为每个数据库设置环境变量。