この記事ではPDB接続時に「ORA-01017」のエラーが発生した場合の対処法を解説します。
PDB接続時に「ORA-01017」のエラーが発生
SQL*PlusでPDBに接続しようとすると「ORA-01017」のエラーが発生し、接続できませんでした。
C:\Users\XXX>sqlplus / as sysdba
SQL*Plus: Release 21.0.0.0.0 - Production on X x月 xx xx:xx:xx xxxx
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
に接続されました。
SQL> alter session set container = xepdb1;
セッションが変更されました。
SQL> show con_name
CON_NAME
------------------------------
XEPDB1
SQL> conn test
パスワードを入力してください:
ERROR:
ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。
エラー内容を確認すると、ユーザ名、パスワードが無効と記載があります。
しかしユーザ名、パスワードを確認しても間違っていませんでした。
このエラーの原因は、PDBへの接続がTNS経由の接続しか受け付けていないためです。
PDBへローカル接続で接続しようとしたために、このエラーが発生しました。
PDBのユーザーでPDBへ接続する場合はtnsnames.oraにPDBの定義を追加し、TNS接続する必要があります。
対処法
tnsnames.oraにpdb接続用の情報を追記します。
XEPDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = XXXXXXXXXXXX)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XEPDB1)
)
)
PDBへTNS接続します。
C:\Users\XXX>sqlplus /nolog
SQL*Plus: Release 21.0.0.0.0 - Production on X x月 xx xx:xx:xx xxxx
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
に接続されました。
SQL> conn test@xepdb1
パスワードを入力してください:
接続されました。
SQL> show user
ユーザーは"TEST"です。
SQL> show con_name
CON_NAME
------------------------------
XEPDB1
もちろん「sqlplus test@xepdb1」のように直接接続しても問題ありません。