Невозможно подключиться к автономной базе данных Oracle с помощью Springboot и кошелька TNS

У меня есть автономная база данных, которую я хочу подключить через Springboot, но я сталкиваюсь со следующей ошибкой, даже если ACL отключен в базе данных Oracle.

java.sql.SQLException: Listener refused the connection with the following error:
ORA-12506, TNS:listener rejected connection based on service ACL filtering

Мои свойства application.properties выглядят так:

spring.application.name=hr_data
database=oracle
spring.datasource.url=jdbc:oracle:thin:@(description= (retry_count=1)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=123_mydb_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))?TNS_ADMIN=F:/Downloads/Wallet_myDB
spring.datasource.username=ADMIN123
spring.datasource.password=123
spring.jpa.database-platform=org.hibernate.dialect.Oracle12cDialect
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
#logging.level.org.springframework=DEBUG
oracle.net.tns_admin=F:/Downloads/Wallet_myDB

Я могу подключиться к БД с помощью студии SQL Developer, используя загруженный мной кошелек.

Вещи, которые я пробовал: -

  1. Включение списка контроля доступа в oracle и добавление моего IP-адреса - не работает
  2. Попытка различных комбинаций TNS_ADMIN в строке подключения и oracle.net.tns_admin – не работает.
  3. Попытка подключиться через класс @Configuration вручную - не работает.
  4. F:\Downloads\Wallet_myDB, F:/Downloads/Wallet_myDB -нет

Теперь ломаю голову, что еще осталось или с моей стороны какая-то неправильная конфигурация? Любая помощь приветствуется

ПРОБЛЕМА РЕШЕНА Свойства приложения должны выглядеть так:

spring.datasource.url=jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=abv_mydb_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))
TNS_ADMIN=F:/Downloads/Wallet_myDB
spring.datasource.username=ADMIN123
spring.datasource.password=123

Цитата

Приложение работает на том же компьютере, что и SQL Developer? Вы можете удалить все списки ACL в базе данных и повторить попытку. Если ошибка та же самая, вам нужно будет отправить запрос на обслуживание, чтобы они могли проверить, есть ли что-то не так на стороне базы данных.

Yasin B 11.05.2024 01:16

@YasinB — приложение работает на моем рабочем столе, а база данных находится в облаке. Acl в настоящее время отключен, но он не работает

Sam 11.05.2024 07:08
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
178
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

ПРОБЛЕМА РЕШЕНА Свойства приложения должны выглядеть следующим образом:

spring.datasource.url=jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name=abv_mydb_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))
TNS_ADMIN=F:/Downloads/Wallet_myDB
spring.datasource.username=ADMIN123
spring.datasource.password=123

Ваш URL-адрес также может быть:

jdbc:oracle:thin:/@NAME_OF_TNSNAMES_ENTRY?TNS_ADMIN=PATH_TO_MAIN_WALLET_DIR

Ваш "(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-mumbai-1.oraclecloud.com))(connect_data=(service_name= abv_mydb_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))» упоминается в tnsnames.ora под именем, которое вы указываете в URL-адресе.

Если вы хотите получить доступ к нескольким различным автономным базам данных, каждая из которых имеет свой собственный кошелек, вы добавляете «(MY_WALLET_DIRECTORY=PATH_TO_WALLET1,2,..._DIR)» после «(ssl_server_dn_match=yes)», при этом каждый кошелек раскрывается в своем собственном подкаталоге. .

При этом у вас будет такая же строка подключения из JDBC, sqlplus, sqlcl... простой вопрос комфорта...

Я пробовал этот способ, но это не работает

Sam 12.05.2024 14:45

Другие вопросы по теме