значение «принято» значительно снизит безопасность вашей базы данных, сделав ее уязвимой для любых атак со стороны любого приложения, которое имеет к ней доступ. В лучшем случае нужно изменить приложение, чтобы оно использовало ENCRYPTION как «обязательное».

ользую Oracle Linux PAAS Linux-сервер для моей машины БД (Oracle 11g) и имею сервер приложений Linux, где я могу запускать все свои Java-приложения.

Предположим, у меня есть веб-приложение на основе Spring, которое может подключаться к машине с облачной БД. Я попытался получить доступ к схеме в Toad для оракула, она работает, как и ожидалось, но когда я пытаюсь нажать на БД для получения данных из приложения, выдает ошибку ниже.

java.sql.SQLException: Io exception: Oracle Error ORA-12650
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:420)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:154)
    at GetConnection.main(GetConnection.java:35)

Я также попытался расширить доступ к сервису от SID до имени сервиса в машине БД. Все равно выдают ту же ошибку. Тот же код отлично работает на другой облачной машине, которую мы установили. Но эта облачная машина была сделана командой оракула, и большинство из них по умолчанию.

Пожалуйста, поделитесь своим предложением, чтобы исправить эту проблему.

 Wanna Coffee25 окт. 2017 г., 20:38
спасибо, я понял, найти ответ для более подробной информации.
 jmk25 окт. 2017 г., 09:10
ASO (или: сетевое шифрование) включено на сервере базы данных?
 Wanna Coffee25 окт. 2017 г., 06:52
Я создал автономное Java-приложение в своей локальной сети и подключаю оракул DB, который работает на облачном сервере Oracle Linux.
 Joe24 окт. 2017 г., 23:05
Это связано с OCI (console.us-phoenix-1.oraclecloud.com)?

Ответы на вопрос(2)

и в результате я обнаружил еще одну ошибку, более серьезную и серьезную, чем та, которую пытались решить Позволь мне объяснить. Прежде всего, упомянутое вами значение «отключено» даже не является допустимым значением для этого параметра. По данным Oracle (Документы Oracle) это допустимые значения, которые может использовать каждый:

SQLNET.ENCRYPTION_SERVER Назначение

Включить шифрование для сервера базы данных.

По умолчанию

принято

Ценности

accepted: включить службу безопасности, если это требуется или запрашивается другой стороной.

rejected: отключить службу безопасности, даже если этого требует другая сторона.

requested: включить службу безопасности, если другая сторона разрешает это.

required: включить службу безопасности и запретить соединение, если другая сторона не активирована для службы безопасности.

пример

SQLNET.ENCRYPTION_SERVER=accepted

В моем случае, для базы данных Oracle Cloud 12c по умолчанию было установлено значение «требуется», что выдает ошибку «Исключение Io: ошибка Oracle ORA-12650» при попытке запустить мое приложение. Установка параметра «принято» решила проблему и сумела запустить мое приложение. Если вы по-прежнему получаете сообщение об ошибке, вы также можете установить следующий параметр для принятого: SQLNET.CRYPTO_CHECKSUM_SERVER = принято, если вы видите, что в вашем sqlnet.ora значение установлено как «обязательный».

Помните, что мое приложение и мои настройки OCI предназначены только для тестирования и не предназначены для использования в производственной среде. Установка значенияSQLNET.ENCRYPTION_SERVER а такжеSQLNET.CRYPTO_CHECKSUM_SERVER значение «принято» значительно снизит безопасность вашей базы данных, сделав ее уязвимой для любых атак со стороны любого приложения, которое имеет к ней доступ. В лучшем случае нужно изменить приложение, чтобы оно использовало ENCRYPTION как «обязательное».

Решение Вопроса

Эта проблема из-за машинного шифрования БД OracleENCRYPTION_SERVER Настройки. Как я понял, что по умолчанию, и установить его на включен, когда мы установим его,отключен или прокомментируйте строку, тогда приложение будет работать как положено. Ниже приведено имя файла для справки,

Filename : sqlnet.ora (We have to disable ENCRYPTION_SERVER settings)
File Location : ../oracle/product/11.2.0/dbhome_1/network/admin 

Надеюсь, это поможет кому-то.

Ваш ответ на вопрос