You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过JDBC在Oracle XE 18中创建非ORACLE_MAINTAINED标记的用户

问题根因

你遇到的ORA-65096报错是Oracle 12c+多租户架构的默认限制:你当前默认连接的是CDB根容器(CDB$ROOT),此容器下创建公共用户必须以C##/c##为前缀,否则会触发报错。使用_ORACLE_SCRIPT隐藏参数绕过校验会强制将创建的用户标记为Oracle官方维护对象,导致ORACLE_MAINTAINED='Y',被应用的元数据查询过滤。

可行解决方案(无需修改应用原有查询逻辑)

方案1:切换到默认PDB创建普通用户(推荐,无需加特殊前缀)

Oracle XE默认自带可插拔数据库(PDB),官方Docker镜像中的XE版本默认PDB名称固定为XEPDB1,在PDB中创建的用户为本地用户,不需要加C##前缀,也不会被标记为Oracle维护用户,操作步骤如下:

  • 切换到PDB容器:
ALTER SESSION SET CONTAINER = XEPDB1;
  • 直接执行创建用户语句,不需要加任何隐藏参数:
CREATE USER newuser IDENTIFIED BY xxx;
  • 按业务需求给用户赋权后即可正常使用,此用户的ORACLE_MAINTAINED字段默认值为N,不会被应用过滤。
    注意:后续应用JDBC连接需要调整为连接XEPDB1,参考连接串格式:jdbc:oracle:thin:@//<主机地址>:<端口>/XEPDB1

方案2:在CDB根容器创建符合命名规范的公共用户

如果你不需要保留用户名完全不带特殊前缀,可直接创建符合Oracle公共用户命名规范的用户,无需修改任何隐藏参数:

CREATE USER C##newuser IDENTIFIED BY xxx;

此用户的ORACLE_MAINTAINED字段默认值为N,应用元数据查询可以正常识别。
注意:此方案需要调整应用配置中的数据库用户名,改为带C##前缀的格式

内容的提问来源于stack exchange,提问作者Iván

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:27:03