我有两台虚拟机ubuntu,一台是安装oracle 11gexpress时的服务器,一台是简单的客户端。我的目标是从客户端计算机远程运行 SQL 查询。所以我准备了查询并将其发送到服务器。但在下面的脚本中以及建立与服务器的连接后,sqlplus 不起作用。它向我显示以下错误:
Sqlplus:找不到命令
在这项工作中我使用这个脚本:
#! /bin/bash
read -p "saisir votre requete: " req
printf "%s\n" "$req" > t1.txt
sed -e 's/[;,()'\'']/ /g;s/ */ /g' t1.txt > t.txt
`tr -s '[[:blank:]]' '\n' < t.txt `|
while IFS= read -r word; do
if ! [[ "$word" =~ $(echo ^\($(paste -sd'|' ./req.txt)\)$) ]]; then
var=$(base64 <<< $word)
sed -i -e "s/$word/$var/g" t1.txt
fi
done
enter code here
scp requete.sql [email protected]:/home/cloud1
#Conection to the Server
ssh [email protected] '/home/cloud1/Cloud-Serv'
Cloud-Serv 文件包含以下代码:
#! /bin/bash
"echo "Connection is done !"
sudo service oracle-xe start
sqlplus / as sysdba
exit
答案1
在大多数情况下,Oracle 实例在特殊帐户下运行,例如 oracle。如果您以该用户身份登录,则需要设置正确的环境,其中$ORACLE_BASE
、$ORACLE_HOME
和$ORACLE_SID
是最重要的。此外,该PATH
变量可以扩展到通常所在的$ORACLE_HOME/bin
位置sqlplus
。查看oraenv
设置正确的环境并尝试使用sqlplus
执行$ORACLE_HOME/bin/sqlplus
答案2
大多数时候,我们将数据库设置从一台服务器复制到另一台服务器。因此,另一台服务器的 oracle HOME 详细信息可能会错误地复制到新服务器。
在新服务器中定位 sqlplus 的方法。
[severdetais scripts]$ locate sqlplus
/oracli/app/oracle/product/11.2.0.3/client_1/sqlplus
/oracli/app/oracle/product/11.2.0.3/client_1/bin/sqlplus
/oracli/app/oracle/product/11.2.0.3/client_1/instantclient/libsqlplusic.so
并在导出属性文件中使用上述位置,如下所示。
export ORACLE_CLIENT=/oracli/app/oracle/product/11.2.0.3/client_1/bin/
export ORACLE_HOME=/oracli/app/oracle/product/11.2.0.3/client_1
export PATH=$PATH:$JAVA_HOME:$JRE_HOME:$ORACLE_CLIENT:$ORACLE_HOME
export LD_LIBRARY_PATH=${ORACLE_CLIENT}:${LD_LIBRARY_PATH}:${ORACLE_HOME}:$ORACLE_HOME/lib
export SQLPATH=${ORACLE_CLIENT}:${SQLPATH}:${ORACLE_HOME}
希望这可以解决问题!