4

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

そのため、少し面倒です。

それに加えて、構成ファイルの同期プロセスをチェックする必要があります...何か新しいことがわかりましたらお知らせします。みんなありがとう。

4

4 に答える 4

6

メッセージは非常に明確です。

  • データベースに正常に接続しました
  • 提供された資格情報が間違っています

これは、クライアントの構成に実際に問題がないことを示しています。

だから、それはあなたを残します

  • ユーザーとパスワードの組み合わせが間違っています
  • あなたが持っていると思うデータベースに連絡していません

可能性:

  • コマンドラインから提供された資格情報で接続できることを確認してください。
  • tnsping mydatabase を使用して、接続しているホストとインスタンスを確認し、それが正しいことを確認します。このコマンドからの出力は、接続先のホスト、ポート、およびインスタンス/サービスを示しているはずです。間違っている場合は、tnsnames.ora ファイルでこの別名を確認してください。
  • @OMG Poniesが示唆するように、11gを使用している場合は、パスワードの大文字と小文字が正しいことを確認してください
于 2011-07-01T16:57:57.347 に答える
0

Daftの質問ですが、bash両方のUNIXサーバーでシェルを使用していることを確認しますか?

交換してみます

export USR_PASS="$USRID/$USRID_PASS@myDatabase"

エクスポートUSR_PASS="$ {USRID} / $ {USRID_PASS} @myDatabase"

変数が正しく解釈されることを確認するため

最後に、エキゾチックですが、パスワードには基本的な英数字と句読点以外の文字が含まれていますか。10gでは大文字と小文字が区別されないため、小文字のパスワードは大文字に変換されます。これにより、アクセント付き文字などで奇妙な効果が生じる可能性があります。

于 2011-07-02T04:55:48.457 に答える