Compatibility

ORA-28040: 一致する認証プロトコルがありませんの解決方法

Posted on
ORA-28040: 一致する認証プロトコルがありません Oracleクライアント9.2から12.1データベースに接続しようとしましたが、ORA-28040: 一致する認証プロトコルがありません。 私は、バージョン間にいくつかの相互運用性の問題がある可能性があることを知っていました、特にこのケースのようにバージョンギャップが大きい場合、Oracle 9iクライアントは12cデータベースに接続します。しかし、ORA-28040が登場するとは思っていませんでした。 12cデータベースに接続するためにojdbc14.jar以下など、古いOracle JDBCドライバを使用しているときにも同じエラーが発生する可能性があります。この記事の後半で、Oracle JDBCドライバについて、ORA-28040を使用して詳細に説明します。 ORA-28040の内容を見てみましょう。 説明 ORA-28040: 一致する認証プロトコルがありません 原因 クライアントとサーバーの両方で有効な認証プロトコルがありません。 アクション 管理者は、クライアントとサーバーの両方で、SQLNET.ALLOWED_LOGON_VERSION_SERVERおよびSQLNET.ALLOWED_LOGON_VERSION_CLIENTパラメータの値を、システムでサポートされている最小バージョンのソフトウェアと一致する値に設定する必要があります。このエラーORA-28040は、クライアントソフトウェアのバージョンに適した検証機能なしで作成されたユーザーアカウントに対してクライアントが認証を行っているときにも発生します。この状況では、必要な検証者が生成され、認証が正常に続行されるようにするために、そのアカウントのパスワードをリセットする必要があります。 サーバーかクライアントか ORA-28040に関する上記の説明によると、クライアントまたはサーバーのどちらかが受け入れる互換性のある認証プロトコルを提供する必要があります。しかし、ここでの問題は、サーバー構成を変更するのか、それともOracle クライアントをアップグレードするのかということです。 実際、それはあなたが持っている特権によって異なります。データベース管理者は、すべてのユーザーの問題を一度に解決するようにサーバー構成を変更できます。開発者にとっては、Oracle 12cデータベースの認証済みプロトコルと一致させるために、Oracleクライアントを修正またはアップグレードすることしかできません。 さまざまな適用可能な状況をよりよく理解するために、この記事ではORA-28040に対する解決策を2つの主要部分に分けます。最初の部分はサーバー側、もう1つはクライアント側です。 サーバーサイドソリューション クライアントサイドソリューション ORA-28040のサーバー側ソリューション サーバー側でネットワーク構成を変更する権限がある場合は、すべてのユーザーのORA-28040を数分で解決する可能性があります。 実際のところ、ほとんどの開発者は権利を持っていません。 シナリオ1:新しいデータベースがサーバーとして機能している 12cなど、より古いバージョンのデータベースに接続するためにユーザーが古いクライアントのアップグレードを拒否した場合、ORA-28040は日常業務で頻繁に発生する一般的なエラーになります。 前記クライアントは、以下のようにOracle 12cデータベースサーバに接続するためのクライアントとして機能するOracle 9iサーバであり得る。ORA-28040が通常どおりsqlplusによってスローされました。 他の解決策を探したところ、ORA-28040を説明するのに非常に役立つ「sqlnet.oraファイルのパラメータ」に関するOracleのドキュメントが見つかりました。その中で、認証プロトコルの両端との互換性を保つためにどのような状況でSQLNET.ALLOWED_LOGON_VERSION_SERVERを使用するべきかを説明します。 目的 Oracle Databaseインスタンスに接続するときに許可される最小認証プロトコルを設定します。 使用上の注意 パラメータ名のVERSIONという用語は、Oracle Databaseのリリースではなく、認証プロトコルのバージョンを表します。 クライアントのバージョンがこのパラメータで定義された値を満たさない、または超えない場合、認証はORA-28040: 一致する認証プロトコルがありません、またはORA-03134:このサーバーバージョンへの接続はサポートされなくなりました。 これは私のORA-28040に対する解決策です:12.1データベースサーバーのsqlnet.oraにSQLNET.ALLOWED_LOGON_VERSION_SERVER=8を追加します(古いクライアントではありません)。 [oracle@test ~]$ vi $ORACLE_HOME/network/admin/sqlnet.ora … SQLNET.ALLOWED_LOGON_VERSION_SERVER=8 MOS Doc ID 562589.1に従ってRAC環境にいる場合は、グリッドレベルではなくデータベースレベルでsqlnet.oraを使用する必要があります。そして私はそれを確認しました。 有効にするためには、リスナーを再起動する必要はありません。新しい着信接続は新しい値を適用します。設定が正しいことを確認してください。 今回は、予想どおりORA-28040は表示されませんでした。 […]
JDBC

How to Disable Automatic Commit Mode in Oracle JDBC

Posted on
Oracle JDBC driver enables automatic commit on by defaults for every new connection. Since it might be expensive to commit to the database after every successful DML, DBA usually suggests ASA(Application Server Administrator) to disable this mode on application-server-level controlled by ASA or connection-level controlled by Java program to improve the performance.We can expect the […]