web-dev-qa-db-ja.com

sqlplus:ORA-01017ログオンが1つのホストから拒否されましたが、別のホストからはOK

説明できないOracle 11.2へのリモートsqlplusログインの奇妙な動作があります。

1)仮想ホストで実行されているOracle 11.2サーバーがあります。
2)別のVMをセットアップしました。たとえば、最小インストールISOから構築されたOracle-instantclient 11.2.0.4 64ビットでHost2(CentOS 6.5 x86_64)を使用します
3)CentOS 6.5 x86_64 VM=イメージがすべてインストールされたデスクトップインストール)もダウンロードしました。たとえば、同じOracleインスタントクライアントをインストールしたHost3と言います。

Host2とHost3の両方で同じ環境とtnsnames.oraファイルを使用しています。

MONSTER=
(DESCRIPTION=
    (ADDRESS=(PROTOCOL=TCP)(Host=host1)(PORT=1521))
    (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=CRM)))

問題:
Host2では、ORA-01017エラーを取り除くことができません。

Host2> sqlplus sys/<passwd>@monster as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Fri Aug 1 12:09:51 2014

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

ERROR:
ORA-01017: invalid username/password; logon denied

しかし、Host3では、すべてが正常です。

Host3> sqlplus sys/<passwd>@monster as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Aug 1 06:21:59 2014

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release ...
SQL>

あるホストからの接続がOKであるのに、他のホストからの接続がKOである理由を誰かが知っていますか?

NB:言うまでもなく、これは大文字と小文字の区別、orapwdの問題、またはremote_login_passwordfileがEXCLUSIVEに設定されていない問題ではありません。これは、Host3から機能するためです。

ありがとう

3
galli2000

私は解決策を見つけました:
マシンのホスト名が/ etc/sysconfig/networkで定義されている場合、この名前も/ etc/hosts、periodで定義する必要があります。

これは私が持っていたものです:

Host2> cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=Host2

Host2> cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.2.8 Host1

Sqlplusの問題を修正するには、/ etc/hostsを次のように変更します。

Host2> cat /etc/hosts
127.0.0.1   Host2 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         Host2 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.2.8 Host1

または、/ etc/sysconfig/networkを次のように変更します。

Host2> cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localdomain.localhost

結論として、ORA-01017エラーメッセージは誤解を招くだけでした。

1
galli2000

最初に、データベースホストがping Host1であることを確認します。

次に、クライアントをインストールし、サービス名を構成する必要があります。

Oracleクライアントを正しくインストールして使用できるようにするには、次のことを行う必要があります。

  1. インスタントクライアントではなく、Oracleクライアントインストールの「管理者」タイプを選択すると、データベース管理者ツールが提供されます。
  2. クライアントのインストール後、Net Manager(netmgr)を実行して新しいサービス名を追加します。接続のテストを開始するとき(最終ステップ)、「scott」ユーザーがデータベースで使用可能であることを確認してください。
  3. 次にtnspingを実行します YOUR_SERVICE_NAMECONNECTION_NAME(訂正してくれてありがとう@vapcguy)-tnspingは管理者用インストールに含まれているツールです)。
  4. sqlplus sys/passwd@<YOUR_SERVICE_NAME> as sysdbaまたはsqlplus sys/passwd@Host1:PORT/<DATABASE_SERVICE_NAME>を実行します
2
neshkeev

私自身も同様の問題がありましたが、私のアプリはVisual Studioから接続できましたが、サーバーに公開したときは接続できませんでした。 zaratustraの投稿は役に立ちましたが、ここでは何も解決しませんでしたが、自分の投稿にリンクすると思いました- ORA-01017:invalid username/password; logon denied -これらのトラブルシューティング方法を示すために-または、少なくとも、あきらめて質問を投稿する前の方法です。

私の解決策は、レジストリエントリを変更することでした:HKLM\System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy\Enabledから1から0

12cクライアントにはバグがあり、パスワードをサーバーに送信するための暗号化アルゴリズムがFIPSに準拠していないため、そこに到達することはありません。確かに、これは11gクライアントでしたが、これを見て、12cクライアントがあり、ここで与えられた他の修正が彼らのために機能しない場合、将来誰かを助けるかもしれません。

0
vapcguy