У меня есть автономная база данных, которую я хочу подключить через 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, используя загруженный мной кошелек.
Вещи, которые я пробовал: -
Теперь ломаю голову, что еще осталось или с моей стороны какая-то неправильная конфигурация? Любая помощь приветствуется
ПРОБЛЕМА РЕШЕНА Свойства приложения должны выглядеть так:
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
Цитата
@YasinB — приложение работает на моем рабочем столе, а база данных находится в облаке. Acl в настоящее время отключен, но он не работает




ПРОБЛЕМА РЕШЕНА Свойства приложения должны выглядеть следующим образом:
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... простой вопрос комфорта...
Я пробовал этот способ, но это не работает
Приложение работает на том же компьютере, что и SQL Developer? Вы можете удалить все списки ACL в базе данных и повторить попытку. Если ошибка та же самая, вам нужно будет отправить запрос на обслуживание, чтобы они могли проверить, есть ли что-то не так на стороне базы данных.