背景
新規案件でOracle12cのデータベースをインフラチーム構築してもらった。
同じタイミングで構築されたAPサーバー(Oracle Client12c)からOracle12Cにログインできたが、いつも使う作業PCからだと以下のエラーが出た。
ORA-28040: 一致する認証プロトコルがありません
調べた結果、作業PCはOracleClient11gのため、バージョンの不一致は原因でした。
DBサーバー側にあるsqlnet.oraに以下の設定を追加した。
SQLNET.ALLOWED_LOGON_VERSION=11
が、作業PCからログインしてみると、また以下のエラーが出てログインできなかった。
ORA-01017: ユーザー名/ パスワードが無効です。ログオンは拒否されました。
対応
ORA-28040の調査&対応
11gのクライアントのログインを許可するように、 DBサーバー側にあるsqlnet.oraに以下の設定を追加した。
SQLNET.ALLOWED_LOGON_VERSION=11
再度ログインすると、以下のエラーが出た!
ORA-01017: ユーザー名/ パスワードが無効です。ログオンは拒否されました。
ORA-01017の調査&対応
参考:
https://stackoverflow.com/questions/41083540/i-cant-login-to-oracle-system-account/45341949#45341949
まずログインユーザのパスワードを確認。
select DBA_USERS.PASSWORD_VERSIONS from DBA_USERS where USERNAME='ログインユーザ';
PASSWORD_VERSIONS
----------------------------------
12C
12Cのため、11gも対応するようにユーザのパスワードを一回変更してみないといけないそうです。
パスワード変更:
SQL> ALTER USER パスワード IDENTIFIED BY "ログインユーザ";
ユーザーが変更されました。
ログインユーザのパスワードを再確認
select DBA_USERS.PASSWORD_VERSIONS from DBA_USERS where USERNAME='ログインユーザ';
PASSWORD_VERSIONS
----------------------------------
11G 12C
これで作業PCから新しく構築したOracle12CのDBサーバーにログインできました!!