我正在创建一个连接到 Oracle 数据库实例的 Spring 启动应用程序。我的应用程序需要处理SQL命令,如创建可插入数据库,更改可插入数据库,更改会话,创建表空间,更改用户等。
我的应用程序属性如下
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 命令需要 sysdba 权限才能执行,因此我在 application.properties 文件中给了 sysdba 用户"sys"及其密码。
但是当我执行命令时,我收到错误 "作为 SYS 的连接应该作为 SYSDBA 或 SYSOPER"。该用户具有sysdba权限,但是当我从SQLPLUS运行时,我提到 SQLPLUS/as sysdba 在执行 alter 命令之前。
我试过指定
spring.datasource.username=sys as sydba,
但是,这会导致 ORA-01017:用户名/密码无效;登录被拒绝错误。
您能否建议我如何从我的应用程序作为 sysdba 连接并执行 alter 命令? 注意:我刚刚听说无法从应用程序以"sys"身份连接,如果是这样,您能否建议可以从应用程序连接以执行更改可插拔数据库命令的用户类型和需要哪些权限 注2:我的应用程序本身旨在根据JSON输入创建和更改PDB。这不是由DBA完成的一次性任务。
我使用spring启动框架和oracle 12c(数据库)。
我的应用程序属性文件如下所示:
# ===============================
# = 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 as SYSDBA
为我工作