シェル・スクリプトからoracleデータベースに接続しようとしています。シェル・スクリプトからoracleデータベースに接続してください
#!/bin/bash
# Shell script to run sql files from command line.
# Pre-Req: sqlplus client shall be installed already.
###########################################################
# Variables Section (DB Details)
###########################################################
driverClassName=oracle.jdbc.driver.OracleDriver
url="(description=(address_list=(address=(protocol=TCP)(host=oradb.test.env.org)(port=1521)))(connect_data=(service_name=TEST_S)))"
DB_UserName="abc"
DB_Password="abc"
LogDirectory="/var/tmp/logs"
DataDirectory="/var/tmp/data"
DB_HostName="oradb.test.env.org"
DB_Port="1521"
DB_SID="KONTOR"
DIR_SqlFiles="C:\git\sql"
##########################################################
# All Script Functions Goes Here
##########################################################
db_statuscheck() {
echo "`date` :Checking DB connectivity...";
echo "`date` :Trying to connect "${DB_UserName}"/"${DB_Password}"@"${DB_SID}" ..."
echo "exit" | sqlplus -S ${DB_UserName}/${DB_Password}@${url} | grep -q "Connected to:" > /dev/null
if [ $? -eq 0 ]
then
DB_STATUS="UP"
export DB_STATUS
echo "`date` :Status: ${DB_STATUS}. Able to Connect..."
else
DB_STATUS="DOWN"
export DB_STATUS
echo "`date` :Status: DOWN . Not able to Connect."
echo "`date` :Not able to connect to database with Username: "${DB_UserName}" Password: "${DB_Password}" DB HostName: "${DB_HostName}" DB Port: "${DB_Port}" SID: "${DB_SID}"."
echo "`date` :Exiting Script Run..."
exit
fi
}
Main() {
echo "`date` :Starting Sql auto run script."
db_statuscheck
echo "`date` :Sql auto run script execution completed."
}
Main | tee autosql.log
ターミナル接続文字列から直接接続しようとすると、シェルスクリプトから直接接続しようとすると失敗します。私が得ている出力は次のとおりです。
7. apr 2016 15:18:09 :Starting Sql auto run script.
7. apr 2016 15:18:09 :Checking DB connectivity...
7. apr 2016 15:18:09 :Trying to connect abc/[email protected]_S ...
7. apr 2016 15:18:09 :Status: DOWN . Not able to Connect.
7. apr 2016 15:18:09 :Not able to connect to database with Username: abc abc Password: kjopsprosesser_utv4 DB HostName: oradb.test.env.orgDB Port: 1521 SID: TEST_S
7. apr 2016 15:18:09 :Exiting Script Run...
grepと-Sパラメータを削除しました。出力をファイルにリダイレクトし、grepを追加して接続が正常に行われたことを確認しています。私は接続文字列で何も変更していないので、誰がスクリプトを動作させるのかは正確にはわかりません。私が得ているオリジナルのエラーは間違ったユーザ名/パスワードに関連していました。これはそれと関係がないので奇妙です。とにかく私はこの答えを正しいものとしてマークしています。ありがとう:) – Sanja
以前は正常に接続されていた可能性がありますが、-sは動作していても 'Connected to 'メッセージが表示されなかったため、grepが失敗しました。 –