Не удается подключиться к базе данных Oracle через TCPS

У нас настроен сервер Oracle, и мы используем TCP с SSL в качестве соединения. Эта настройка была сделана с помощью мастера-помощника, и мы почти везде использовали настройки по умолчанию (что также означает, что не существует ни tnsnames.ora, ни listener.ora). lsnrctl status показывает, что прослушиваются правильные порты.

Мы пытаемся подключиться к этой базе данных через DBeaver и SQuirrel SQL, но не можем заставить ее работать. Мы установили vmargs для программ, чтобы они содержали сертификат сервера (например, dbeaver.exe -vmargs -Djavax.net.ssl.trustStore=C:/...keystore.jks -Djavax.net.ssl.trustStorePassword=password -Djavax.net.ssl.trustStoreType=JKS), который отлично работает.

Подключение к базе данных с конкретной строкой URL-адреса JDBC (jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=IP)(PORT=5500))(CONNECT_DATA=(SERVICE_NAME=testdb)))) не работает и истекает через 60 секунд без надлежащей ошибки (Ошибка ввода-вывода: получен минус один из вызова чтения). Мы перепробовали почти все и не можем заставить это работать.

Порты назначены правильно, доступ к базе данных возможен по обычному протоколу TCP и порту 1521.jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=IP)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=testdb)))

Мы пропустили шаги? Проблем с брандмауэром вроде нет. Сертификаты вроде бы тоже работают нормально, но мы не можем подключиться ни к одной из программ (или sqlplus через командную строку).

Кто-нибудь знает, в чем может быть проблема? Спасибо!


person throw into    schedule 17.04.2018    source источник
comment
Слушает ли ваш слушатель протокол TPCS? Вы должны увидеть в выводе lsnrctl status   -  person gvenzl    schedule 17.04.2018
comment
Да, это так: Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=...)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=...)(PORT=5500))(Security=(my_wallet_directory=/home/oracle/app/product/12.1.0/dbhome_1/admin/testdb/xdb_wallet))(Presentation=HTTP)(Session=RAW)) Services Summary... Service "testdb" has 1 instance(s). Instance "testdb", status READY, has 1 handler(s) for this service... Service "testdbXDB" has 1 instance(s). Instance "testdb", status READY, has 1 handler(s) for this service...   -  person throw into    schedule 18.04.2018
comment
Вы пытаетесь подключиться к порту 5500, но этот порт используется только для EMExpress. См. «Presentation=HTTP», это означает, что у вас нет протокола SQLNet. Вам нужен другой порт для SQLNet через TCPS. Взгляните на blogs.oracle.com/dev2dev/   -  person gvenzl    schedule 18.04.2018
comment
Смысл, да! Спасибо и за ссылку. Однако теперь я заработал с новым портом 2484, не следуя инструкциям по ссылке (хотя они окажутся полезными для нашего java-клиента). По-видимому, важно отметить: разделите сервер оракула и клиент, не используйте их на одной машине, это не сработало для меня.   -  person throw into    schedule 20.04.2018
comment
Рад слышать! Возможно, вы захотите сами ответить на свой вопрос о шагах, которые вы предприняли, чтобы будущие пользователи, которые будут искать это в Google, могли извлечь выгоду из вашего опыта :)   -  person gvenzl    schedule 20.04.2018


Ответы (2)


Можете ли вы проверить блог SSL или наш страница OTN с пошаговыми инструкциями? Если вы используете TLSv1.2, то версия JDK и версии драйвера JDBC очень важны.

person Nirmala    schedule 21.04.2018
comment
Спасибо! Я уже заставил это работать, см. Мой ответ. Я уже перепроверил правильные версии JDBC и JDK :) - person throw into; 02.05.2018

В конце концов я заставил его работать. В Интернете есть различные сайты, на которых показано, как это делается. Я использовал этот: https://database.edorex.ch/blog/database-connection-with-a-certificate/

Настройка кошельков, настройка сертификатов и настройка пользователя в базе данных были наиболее важными шагами. Кроме того, мне пришлось разделить сервер и клиентские машины. Сервер теперь находится на виртуальной машине, и он работает таким образом, я не мог заставить его работать, имея оба на одной машине.

person throw into    schedule 02.05.2018