Строка соединения Java с базой данных Oracle Cloud

У меня были проблемы при подключении к Oracle Cloud Database из Java-кода.

  • У меня нет проблем с подключением других не облачных баз данных Oracle.

  • Я могу подключиться к Oracle Cloud Database с помощью инструментов sql, кроме как из Java-кодов.

  • Имя хоста, имя пользователя и пароль верны, я не раскрываю реальное имя пользователя и пароль.

Ошибка: java.sql.SQLException:

SQLException: SQLState(null) vendor code(17002)
java.sql.SQLException: Io exception: Oracle Error ORA-12650: No common encryption or data integrity algorithm

Мой код следующим образом:

String dbURL = "jdbc:oracle:thin:@192.133.133.23:1521:ORCL";

try {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    Connection conn = DriverManager.getConnection(dbURL, "username1", "password");


}catch(Exception)
{
  e.printStacktrace();
}

0 ответов

/**
 * The below one is for oracle thin client
   Its worked for the ojdbc6 driver. 
 */
public Connection conCheck() {

      Connection con=null;
      try { //step1 load the driver class
      Class.forName("oracle.jdbc.OracleDriver");

      Properties props = new Properties();
      props.put("oracle.net.encryption_client", "REQUIRED");
      props.put("oracle.net.encryption_types_client",  "( " + AnoServices.ENCRYPTION_AES256 + "," +AnoServices.ENCRYPTION_AES192 + ")");
      props.put("oracle.net.crypto_checksum_types_client", "( SHA1 )");
      props.put("user", "username");
      props.put("password","password");

    //step2 create  the connection object          
      con=DriverManager.getConnection(  "jdbc:oracle:thin:@host:port:serveiceid",props);

       System.out.println("Con"+con);
      }catch(Exception e) {e.printStackTrace(); }       

 return con;
}

Первая обязательная проверка - это проверка версии oracle jdbc. если вы используете несовместимую версию, мы получим эту детскую ошибку.

Похоже на изменение синтаксиса в строке подключения для поиска SERVICE_NAME вместо того SID должен помочь вам подключить вашу базу данных.

String dbURL = "jdbc:oracle:thin:@192.133.133.23:1521/ORCL";

Дополнительная информация: синтаксис имени службы в тонком стиле

Если это тоже не помогает, то предлагаю добавить в sqlnet.ora в базу данных 2 строки ниже.

SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT= (SHA1)
SQLNET.CRYPTO_CHECKSUM_CLIENT = requested
Другие вопросы по тегам