Oracle 10g データベースに接続する bash スクリプトがあります。
最初のステップでは、次のコマンドを使用して「config」ファイルからいくつかの変数を取得します
. /path/to/my/configfile.ini
構成ファイルには、いくつかの変数があります。
export USRID=myUser
export USRID_PASS=myPassword
export USR_PASS="$USRID/$USRID_PASS@myDatabase"
次に、次のコマンドを使用して実際に sqlplus 経由で接続します。
sqlplus -s $usr_pass
恐ろしいセキュリティとデザインの問題は別として (このスクリプトは 5 年前から存在しています)。これは、実際には UNIX サーバーの 1 つで機能していますが、別のサーバーでは機能していません。
でスクリプトを実行するとbash -x
、コマンドが次のように展開されていることがわかります。
sqlplus -s myUser/myPassword@myDatabase
...これはうまくいくはずです(実際には1つのサーバーで動作しています)が、失敗したサーバーでの応答は次のとおりです。
エラー: ORA-01017: ユーザー名/パスワードが無効です。ログオンが拒否されました
SP2-0306: 無効なオプションです。使用法: CONN[ECT] [ログオン] [AS {SYSDBA|SYSOPER}] ここで ::= [/][@] | SP2-0306: 無効なオプションです。
オラクルよりもbashの方が重要だと思いますが、私はbashの専門家ではありません。不足している設定や詳細はありますか?
編集:
問題をもう少し突き止めようとして、3 番目の開発サーバーで 2 つのバージョンのスクリプトを実行しています。別のテストでは、次のようにするとログインが機能します。
sqlplus -s $usrid/$usrid_pass@myDatabase
しかし、私が試したときではありません:
sqlplus -s $usr_pass
そのため、少し面倒です。
それに加えて、構成ファイルの同期プロセスをチェックする必要があります...何か新しいことがわかりましたらお知らせします。みんなありがとう。