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



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

到目前为止,我已经写了这个:

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

但是,这段代码没有连接到数据库,也似乎没有连接到该数据库。

我得到以下错误:sqlplus:找不到[没有这样的文件或目录]

经过几次尝试后,这一切都成功了。

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

最新更新