アプリ版:「スタンプのみでお礼する」機能のリリースについて

eclipseでjavaを使ってoracleに接続しようとしたのですが、「ORA-28040: 一致する認証プロトコルがありません」というエラーが出て、原因が分かりません。

oracleに接続する部分のプログラムは、下記のとおりです。

// ユーザ名
String user = "ED";
// パスワード
String pass = "ED";
// サーバ名
String servername = "SVR";
// SID
String sid = "WEBSDB";

Connection conn = null;
Statement stmt = null;
ResultSet rset = null;

List<Cyoutatsu> cyoutatsuList = new ArrayList<Cyoutatsu>();

try {
// JBBCドライバクラスのロード
Class.forName("oracle.jdbc.driver.OracleDriver");

// Connectionの作成
conn = DriverManager.getConnection("jdbc:oracle:thin:@" + servername + ":1521:" + sid, user, pass);

// Statementの作成
stmt = conn.createStatement();

String sql = "SELECT 管理番号 FROM 番号";
PreparedStatement pStmt = conn.prepareStatement(sql);

rset = pStmt.executeQuery();

while(rset.next()) {
String 管理番号 = rset.getString("管理番号");

Cyoutatsu cyoutatsu = new Cyoutatsu(管理番号);
cyoutatsuList.add(cyoutatsu);
}


} catch (ClassNotFoundException e) {
throw e;
} catch (SQLException e) {
throw e;
} catch (Throwable e) {
throw e;
} finally {
try {
/* クローズ処理 */
if (rset != null) {
rset.close();
rset = null;
}

if (stmt != null) {
stmt.close();
stmt = null;
}

if (conn != null) {
conn.close();
conn = null;
}
} catch (Throwable e) {
// nop
}
}
return cyoutatsuList;

クライアント、サーバー(SVR)共に、oracleのバージョンは、12.2.0.1.0 です。

解決策をご教授いただければ幸いです。

北條

質問者からの補足コメント

  • つらい・・・

    ちなみに、下記行でエラーが発生しています。

    conn = DriverManager.getConnection("jdbc:oracle:thin:@" + servername + ":1521:" + sid, user, pass);

      補足日時:2019/02/15 09:35
  • つらい・・・

    ojdbc8、jdk1.8.0をインストールしています。

      補足日時:2019/02/15 15:21

A 回答 (1件)

12c以降のインスタンスでよく発生する問題。

サーバー側のsqlnet.oraファイルに
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 10または11を設定することで、エラーORA-28040を解決できます。
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

ただ、テストしている自分の端末のsqlnet.oraにSQLNET.ALLOWED_LOGON_VERSION_SERVER = 10とSQLNET.ALLOWED_LOGON_VERSION_SERVER = 11を追加してみましたが、エラーが変わりません。

お礼日時:2019/02/15 09:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!