web-dev-qa-db-ja.com

AWS EC2のUbuntuインスタンスから接続するときに「ORA-24454:クライアントのホスト名が設定されていません」

一部の背景: Oracleデータベースに接続しようとしています。ユーザー名、パスワード、IPアドレス、ポート、サービス名を持っています。 Oracleデータベースは別の組織内にあるため、私はAWSのUbuntu EC2インスタンスからのみこのデータベースにアクセスできます。このため、このマシンのDNSホスト名にアクセスできません。

OracleのWebサイトから「Oracle Instant Client with SQL Plus」クライアントパッケージをダウンロードして、フォルダーに抽出しました。実行しようとすると、次のメッセージが表示されます。

ORA-24454:クライアントのホスト名が設定されていません

10
Karl Johnson

2時間後、私はそれを理解しました。

エラーに関するOracleのドキュメント 最初はひどく説明的ではなかったようです。

ORA-24454:クライアントのホスト名が設定されていません

原因:/ etc/hostsなどのファイルのネットワークホスト名が設定されていません。

アクション:ホスト名を設定して再試行します。

現在、コマンドは私のマシン(Ubuntuラップトップ)では機能しましたが、EC2では機能しませんでした。 HOSTNAME変数を少し試してみて、sqlplusの設定で「クライアントのホスト名」を上書きする方法があるかどうかを調べようとしました-サイコロはありません。私はようやく私のマシンの/ etc/hostsをEC2のものと比較し、EC2にはない次の行に気づきました。

127.0.1.1 my-laptop-hostname

私は以前これを知りませんでしたが、Debianベースのマシンでは システムのホスト名をこのIPアドレスにマップする のようです。 127.0.1.1がループバックIPであることさえ知りませんでした。 127.0.0.1について知っていました。

さらに、sqlplusはこの行が存在することに依存しているようです。それでも理由はわかりません。

とにかく、修正は簡単です:

$ Sudo /bin/bash -c "echo '127.0.1.1 ${HOSTNAME}' >> /etc/hosts"
13
Karl Johnson

これは、EC2が作成されたVPC設定がnoに設定されていたためです:

Your VPCs-> Summaryタブの下で、

DNSホスト名:いいえ

他の人が答えるような手動での解決を回避するには、DNSホスト名の値をyesに設定します

3
Arif Basri

これは上記のコメントで言及されていますが、この行により、ポート1521でdocker wnameless/Oracle-xe-11gを実行しているMacBook Proでこの問題が修正されました。

Sudo /bin/bash -c "echo '127.0.0.1 ${HOSTNAME}' >> /etc/hosts"

次のコマンドはすべて正常に機能しました。

sqlplus system/Oracle@localhost:1521/xe
sqlplus system/[email protected]:1521/xe
sqlplus system/Oracle@my-personal-hostname:1521/xe

非常に奇妙ですが、それは修正です。

2
turiyag

MacOSでこの問題が発生しました

/etc/Hostsファイルにホスト名を正しく入力したことを確認してください

that> hostnameコマンドを実行すると、「Macの実際のホスト名」と/ etc/hostsへの以下の行が表示されます

127.0.0.1 your_Host_name.local
1
Melih

この問題は私にも起こりましたが、上記の解決策だけでは解決しませんでした。 11g/12gクライアントを使用している場合は、別のエラーが発生します。

エラーを解決するには、次の手順を実行します。

  1. hostname -Aは、/etc/sysconfig/networkと同じホスト名を返します
  2. 上記のように、ホスト名が/etc/hostsにあることを確認します(127.0.0.1ホスト名)
1
Bren1818