Database Support Blog

Database Support Blog>Oracle Database 12cR2へのアップグレード後に発生するORA-01017

  • Oracle Database
2017.12.14

Oracle Database 12cR2へのアップグレード後に発生するORA-01017

Oracle Database 12cR2へのアップグレード後に発生するORA-01017

Oracle Database 12cR2へのアップグレード後に発生するORA-01017

この記事は JPOUG Advent Calendar 2017 の14日目のエントリです。

2017年の3月にオンプレミス版がリリースされて以降、弊社サポートセンターにも徐々にOracle Database 12cR2環境のお問合わせが増えてきました。

新しいバージョンには新たに追加されたパラメータやデフォルト値が変更されたパラメータがあり、変更に起因したトラブルが発生することもあります。

今回は12cR2へのアップグレード後のお客様からお問い合わせをいただくことの多かった(2017年12月1日現在で約30件)、12cR2環境での「ORA-01017: ユーザー名/ パスワードが無効です。」のエラーについてご紹介します。

SEC_CASE_SENSITIVE_LOGONの設定値に注意

SEC_CASE_SENSITIVE_LOGONはOracle Database 11gR1から追加されたパラメータで、ログイン時に入力するパスワードの大文字/小文字を区別させることができます。デフォルト値はOracle Database 11gR1で追加された時点でTRUE(区別する)です。

▲SEC_CASE_SENSITIVE_LOGONによるパスワードの大/小文字制御
Database Version 大文字/小文字の区別 区別の制御
10gR2 以前 されない できない
11gR1 以降 される(デフォルト=TRUE) できる
12cR1 以降 される(デフォルト=TRUE) できる(非推奨)

12cR1からこのパラメータの使用(明示的にFALSEに変更すること)は非推奨ですが、特に10g以前からアップグレードされた環境では従来通りの動作を踏襲させるため、このパラメータをFALSE(区別しない)に設定されているケースが多く見られます。

SEC_CASE_SENSITIVE_LOGONは非推奨となりましたが、使用禁止ではないため12cR2でもFALSEに変更することは可能です。ただし、その場合SQLNET.ORAのパラメータSQLNET.ALLOWED_LOGON_VERSION_SERVERも考慮する必要があります。

SQLNET.ALLOWED_LOGON_VERSION_SERVERのデフォルト値が"12"に変更

Oracle Database 12cR2からデフォルト値が変更されたパラメータの中にsqlnet.oraに設定可能な SQLNET.ALLOWED_LOGON_VERSION_SERVER があります。SQLNET.ALLOWED_LOGON_VERSION_SERVERは端的に言うとOracle Databaseに接続する際に許容するパスワード・バージョンの範囲を決めるパラメータです。

Oracle Database 12cR2ではデフォルト値が"12"であり、大文字/小文字を区別する11gおよび12cのパスワードバージョンのみ使用可能な設定です。

そのため、初期化パラメータSEC_CASE_SENSITIVE_LOGONがFALSE(区別しない)に設定されている場合は、たとえユーザ名/パスワードに正しい値を入力していても「ORA-01017: ユーザー名/ パスワードが無効です。」が発生し接続に失敗します。

対処方法

これらのパラメータに起因して発生したORA-01017エラーは以下いずれかで回避可能です。

・SEC_CASE_SENSITIVE_LOGON=TRUE、SQLNET.ALLOWED_LOGON_VERSION_SERVER=12で運用
 セキュリティ上の推奨は大文字/小文字を区別しての運用です。SEC_CASE_SENSITIVE_LOGONがFALSEの場合はTRUEに変更し、大文字/小文字を区別したパスワードバージョンで再設定します。※手順は アップグレード・ガイド を参照

・SEC_CASE_SENSITIVE_LOGON=FALSE、SQLNET. ALLOWED_LOGON_VERSION_SERVER=11以下で運用
 大文字/小文字を区別せずに運用させたい場合は、SQLNET.ALLOWED_LOGON_VERSION_SERVERを11以下に設定します。$ORACLE_HOME/network/admin/sqlnet.oraにSQLNET.ALLOWED_LOGON_VERSION_SERVER=<N>を追記し、大文字/小文字を区別しないパスワードバージョンで再設定します。

 この場合、データベースの起動時に非推奨の初期化パラメータを利用していることを表すORA-32004が発生しますが、起動に影響はありません。

まとめ

今回ご紹介したSEC_CASE_SENSITIVE_LOGONは12cR2では非推奨となりましたが利用は可能です。ただし、今後のリリースでは使用できなくなる可能性もあるため、アップグレードのタイミングで大文字/小文字を区別した運用に切り替え(新しいパスワードバージョンで再設定)をお奨めします。

また、Oracle Database 12.2への接続は11.2.0.3以降のクライアントが保証されていますので、移行の際にはこの点も注意が必要です。

なお、アップグレード・ガイドにはアップグレード前の 事前チェック項目 変更点 が記載されており、SEC_CASE_SENSITIVE_LOGON/SQLNET.ALLOWED_LOGON_VERSION_SERVERも含まれています。

今回ご紹介した内容以外にも注意点が記載されておりますので、未然に問題を防ぐため、アップグレードを検討される際にはアップグレード・ガイドをご一読ください。

大野 高志

サービス事業部 サポートセンター

2007年にアシスト入社後、Oracle Databaseのサポート業務に従事。現在はサポート業務の傍ら、未解決のトラブルを一つでも多く減らせるよう、サポートセンターに蓄積されているノウハウを社内外に伝える活動を行っている。


データベースのサポートならアシスト

関連している記事

  • Oracle Database
2018.09.11

【Oracle Database】実行計画の固定化方法まとめ

実行計画を固定する方法を4つご紹介します。Oracle Database 18cからStandard Editionでも実行計画固定のためにSQL Plan Management(SPM)の一部機能が利用できるようになりました。

  • Oracle Database
2018.08.08

【Oracle Database】18cで追加された手軽に使える便利な新機能3つ

Oracle Database 18c で追加された手軽に使える便利な新機能を3つご紹介します。

  • Oracle Database
2018.07.31

【Oracle Database】18c新機能:統合監査のData Pump EXPORT/IMPORT

Oracle Database 18cでは統合監査の情報をData Pumpを使ってEXPORT/IMPORTできるようになっています。注意事項と併せてご紹介します。

アシストサポートセンターのご紹介 Oracle Database研修

ページの先頭へ戻る