2つの仮想マシンUbuntuがあります。 1つはoracle 11gexpressをインストールするときのサーバー、もう1つは単純なクライアントです。私の目標は、クライアントコンピュータでリモートで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}
これが問題を解決することを願っています!