从春季启动应用程序连接到Oracle DB时如何指定DBA角色

时间:2019-04-17 15:27:22

标签: database oracle alter sysdba pluggable-database

我正在创建一个连接到Oracle数据库实例的Spring Boot应用程序。我的应用程序需要处理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特权才能执行,因此我在application.properties文件中给了sysdba用户“ sys”及其密码。

但是当我执行命令时,我得到了错误 “作为SYS的连接应为SYSDBA或SYSOPER”。此用户具有sysdba特权,但是当我从SQLPLUS运行时,我提到 在执行alter命令之前,将SQLPLUS /作为sysdba。

我尝试指定

spring.datasource.username=sys as sydba,

但是导致ORA-01017:无效的用户名/密码;登录被拒绝错误。

您能建议我如何从应用程序中以sysdba的身份连接并执行alter命令吗? 注意:我刚刚听说不可能从应用程序以“ sys”身份进行连接,如果可以的话,请建议可以从应用程序连接以执行ALTER PLUGGABLE DATABASE的用户的类型以及所需的特权命令 注意2:我的应用程序本身旨在基于JSON输入创建和更改PDB。这不是DBA的一次性任务。

1 个答案:

答案 0 :(得分:2)

我使用Spring Boot框架和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

you could find the file here