Oracle「ORA-01017:ユーザー名/パスワードが無効です。ログオンは拒否されました。ユーザー名を入力してください。」が出た場合の原因と対応方法

  • URLをコピーしました!

Oracle Databaseを利用していると、多くの人が一度は遭遇するエラーが

「ORA-01017: invalid username/password; logon denied」 です。
SQL*PlusやSQL Developerでのログイン、あるいはアプリケーションの起動時に表示され、作業がストップしてしまう厄介なエラーです。

本記事では、このエラーの 原因と解決方法を体系的に整理 し、実際の現場で役立つ対応手順を紹介します。


目次

ORA-01017エラーとは?

このエラーは、Oracleが「入力されたユーザー名またはパスワードが正しくないため、ログオンを拒否した」と判断した際に表示されます。

主に以下のようなシーンで発生します。

  • SQL*Plus で手動ログインするとき

  • SQL Developer などのGUIツールから接続するとき

  • Java/JDBCやPHP などのアプリケーションがDB接続を試みるとき

  • バッチ処理シェルスクリプト による自動接続

単純にパスワードを打ち間違えただけでも発生しますが、実際の現場ではもっと複雑な原因が潜んでいることもあります。


ORA-01017が発生する主な原因

1. ユーザー名やパスワードの誤り

  • スペルミス(大文字・小文字の違いも区別される)

  • コピペ時の不可視文字(空白や改行が含まれている)

  • ユーザー作成時に "USERNAME" のように ダブルクォーテーション付き で作成しており、大文字小文字が厳密に一致していない

2. アカウントがロックされている/パスワード期限切れ

Oracleではセキュリティのため、一定回数の失敗でアカウントがロックされたり、パスワードに有効期限が設定されている場合があります。

3. 認証方式の違い

  • Oracle 12c以降では、古い認証方式(DESなど)が無効化されている

  • 古いクライアント/JDBCドライバで接続すると認証エラーになる

4. 接続先の設定ミス

  • tnsnames.ora の設定が間違っている

  • service_nameSID が異なる環境を参照している

  • テスト環境と本番環境を取り違えている

5. 外部認証の影響

  • OS認証(/ as sysdba)を利用しているが権限が不足している

  • パスワードファイル(orapwd)が正しく作成されていない


ORA-01017エラーの解決方法

1. ユーザー名・パスワードを正確に確認する

まずは基本中の基本。

  • コピー&ペーストではなく手入力 で試す

  • 大文字小文字を区別することを意識する

  • ユーザー作成時に "USERNAME" のように指定していないか確認

2. アカウントの状態を確認する

管理者ユーザーで以下を実行します。

SELECT username, account_status, expiry_date
FROM dba_users
WHERE username = '対象ユーザー';
  • LOCKEDALTER USER ユーザー名 ACCOUNT UNLOCK;

  • EXPIREDALTER USER ユーザー名 IDENTIFIED BY 新パスワード;


3. 認証方式を見直す

ユーザーごとのパスワードバージョンを確認:

SELECT username, password_versions FROM dba_users;
  • 10G のみ → 古い方式。新しいクライアントで接続不可の可能性あり

  • 11G12C が含まれているか確認

  • JDBCドライバやOCIクライアントを 最新化 する

4. 接続文字列を確認する

誤接続が多いポイントです。

sqlplus user/password@//hostname:1521/service_name
  • hostnameservice_name が正しいか

  • ローカルの tnsnames.ora が古い情報を持っていないか

5. 外部認証を確認する

  • OSユーザーに必要な権限があるか

  • SYSDBA接続が可能な状態か

  • パスワードファイルが壊れていれば orapwd コマンドで再作成


現場でのチェックリスト

  1. 入力の大文字・小文字を再確認する

  2. コピペではなく手入力で試す

  3. DBA_USERS を確認してアカウント状態を把握

  4. クライアントやJDBCドライバを最新化

  5. 接続先(サービス名/ホスト名)が正しいか見直す

  6. OS認証やパスワードファイルに問題がないか確認

よくある質問(Q & A)

ユーザー名とパスワードが正しいはずなのに ORA-01017 が出るのはなぜですか?

入力内容が正しく見えても、大文字・小文字の違いコピー&ペースト時に混入した空白文字 が原因で認証に失敗することがあります。
また、ユーザーを "UserName" のようにダブルクォーテーション付きで作成している場合、完全一致 が必要になるため注意が必要です。

アカウントがロックされている場合も ORA-01017 は表示されますか?

はい、表示されます。
Oracleではセキュリティ上の理由から、アカウントがロックされている場合でも ORA-01017 と同じエラーメッセージ が返されることがあります。
管理者ユーザーで DBA_USERS を確認し、ACCOUNT_STATUS を必ずチェックしてください。

パスワードの有効期限切れでも ORA-01017 になりますか?

なります。
パスワードが期限切れの場合、本来はパスワード変更を促されますが、接続方法やクライアントによっては ORA-01017 として表示されるケース があります。
EXPIRY_DATE の確認と、必要に応じたパスワード再設定を行ってください。

SQL*Plusでは接続できるのに、アプリケーションからは ORA-01017 が出ます

この場合、JDBCドライバやOracleクライアントのバージョン不一致 が原因の可能性があります。
Oracle 12c以降では古い認証方式が無効化されているため、アプリ側のドライバが古いとログインに失敗します。
JDBCドライバの更新、または認証方式の確認を行ってください。

環境を切り替えた直後に ORA-01017 が出るようになりました

接続先の サービス名・SID・ホスト名の誤り がよくある原因です。
特に開発環境と本番環境を切り替えた際、tnsnames.ora や接続文字列が古いままになっているケースが多く見られます。
「本当に想定しているデータベースに接続しているか」を必ず確認してください。

SYSユーザーで接続しているのに ORA-01017 が出ます

OS認証やパスワードファイルに問題がある可能性があります。
/ as sysdba 接続の場合は、OSユーザーの権限やパスワードファイル(orapwd)が正しく設定されているかを確認してください。

ORA-01017 が出たとき、最初に確認すべきポイントは何ですか?

以下の順で確認すると効率的です。

  1. ユーザー名・パスワードの入力ミス
  2. アカウントのロック・期限切れ
  3. 接続先(サービス名・環境)の間違い
  4. クライアントやJDBCドライバのバージョン
  5. OS認証やパスワードファイルの設定

多くの場合、①〜③のいずれかで原因が特定できます。


まとめ

「ORA-01017」は、単純に「パスワード間違い」と片付けがちですが、実際には アカウントロック、認証方式、接続先設定の誤り など複数の要因が絡むことがあります。

対処の基本ステップは以下の通りです。

  • 入力の確認 → アカウント状態の確認 → 認証方式・接続設定の見直し

これを押さえておけば、大半のケースで迅速に問題を解決できます。

よかったらシェアしてね!
  • URLをコピーしました!
0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る
目次