Как указать роль администратора базы данных при подключении к базе данных Oracle из весеннего загрузочного приложения

Я создаю весеннее загрузочное приложение, которое подключается к экземпляру Oracle DB. Моему приложению требуется обрабатывать такие команды SQL, как CREATE PLUGGABLE DATABASE,ALTER PLUGGABLE DATABASE,ALTER SESSION,CREATE TABLESPACE,ALTER USER и т. Д.

Мои Application.properties, как показано ниже

spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@x.x.x.x:port/servicename
spring.datasource.username=sys
spring.datasource.password=somepassword

Поскольку для выполнения ALTER PLUGGABLE DATABASE COMMANDS требуется привилегия sysdba, я указал пользователю sysdba "sys" и его пароль в файле application.properties.

Однако, когда я выполняю команду, я получаю сообщение об ошибке "соединение как SYS должно быть как SYSDBA или SYSOPER". Этот пользователь имеет привилегию sysdba, однако, когда я запускаю из SQLPLUS, я упоминаю SQLPLUS / как sysdba перед выполнением команд alter.

Я попытался указать

spring.datasource.username=sys as sydba,

однако это приводит к ORA-01017: неверное имя пользователя / пароль; Ошибка входа в систему.

Подскажите, пожалуйста, как я могу подключиться как sysdba из моего приложения и выполнить команды alter? Примечание: я только что услышал, что невозможно подключиться как "sys" из приложения, если да, то можете ли вы предложить, какой тип пользователя и какие привилегии потребуются для пользователя, который может быть подключен из приложения для выполнения ALTER PLUGGABLE DATABASE Команды Примечание 2. Само мое приложение предназначено для создания и изменения PDB на основе входных данных JSON. Это не разовая задача, выполняемая администратором базы данных.

2 ответа

Я использую Spring boot framework и oracle 12c (базу данных).

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

# ===============================
# = DATA SOURCE
# ===============================
# Set here configurations for the database connection
spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521:ORCLCDB
spring.datasource.username=sys as sysdba
spring.datasource.password=Oradoc_db1
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver

# ===============================
# = JPA / HIBERNATE
# ===============================
# Show or not log for each sql query
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create-drop
# Naming strategy
spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl
spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
# Allows Hibernate to generate SQL optimized for a particular DBMS
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle12cDialect
spring.jpa.database-platform=org.hibernate.dialect.Oracle12cDialect

вы должны указать имя пользователя таким образом:

spring.datasource.username=sys as sysdba

вы можете найти файл здесь

имя пользователя: SYS как SYSDBA

Работает на меня

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