database - 从 Spring Boot 应用程序连接到 Oracle DB 时如何指定 DBA 角色
问题描述
我正在创建一个连接到 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 运行时,我在执行更改命令之前提到了 SQLPLUS / as sysdba。
我试过指定
spring.datasource.username=sys as sydba,
但是这会导致 ORA-01017: invalid username/password; 登录被拒绝错误。
您能否建议我如何从我的应用程序连接为 sysdba 并执行更改命令?注意:我刚听说不能从应用程序连接为“sys”,如果可以,请建议可以从应用程序连接的用户需要什么类型的用户以及需要什么权限才能执行 ALTER PLUGGABLE DATABASE命令 注 2:我的应用程序本身旨在根据 JSON 输入创建和更改 PDB。这不是 DBA 一次性完成的任务。
解决方案
我使用 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
推荐阅读
- rust - Rust PathBuf 如何防止目录遍历攻击?
- r - 如何让这个简单的功能更高效?
- python - 从大型 Excel 文件中获取工作表名称
- javascript - 如何从与特定字符匹配的对象数组中提取属性(包含查询)
- google-apps-script - Google Script SetFormula 转义引号
- javascript - 从填充列表中获取选定的选项 ID
- r - 考虑“缺失”值,处理应输入 0 的实例
- jersey - 在类或方法上注入的@Context 有什么不同吗?
- node.js - ES6 async/await 并行处理
- sql-server - 没有显示错误,但存储过程不会在按钮单击时执行