두 개의 가상 머신 우분투가 있습니다. 하나는 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}
이것이 문제를 해결하기를 바랍니다!