Bash

Sqlplus:找不到命令

  • March 11, 2020

我有兩台虛擬機ubuntu,一台是我安裝oracle 11g express時的伺服器,另一台是簡單的客戶端。我的目標是從客戶端電腦遠端執行 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 cloud1@1.0.0.1:/home/cloud1

#Conection to the Server

ssh cloud1@1.0.0.1 '/home/cloud1/Cloud-Serv'

並且文件 Cloud-Serv 包含以下程式碼:

#! /bin/bash
"echo "Connection is done !"

sudo service oracle-xe start

sqlplus / as sysdba

exit

在大多數情況下,Oracle 實例在特殊帳戶下執行,例如 oracle。如果您以該使用者身份登錄,則需要設置正確的環境,其中$ORACLE_BASE$ORACLE_HOME$ORACLE_SID最重要的。此外,該PATH變數可以擴展為具有通常所在$ORACLE_HOME/bin的位置。sqlplus看看oraenv 設置正確的環境並嘗試sqlplus使用執行$ORACLE_HOME/bin/sqlplus

大多數時候,我們將數據庫設置從一台伺服器複製到另一台伺服器。因此,另一個伺服器 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}

希望這可以解決問題!

引用自:https://unix.stackexchange.com/questions/195524