如何无需运行SQL解决Oracle SQL Developer新建用户报ORA-65096的问题
问题核心原因
ORA-65096报错和你是否使用SYS用户无关,根源是Oracle 18c XE默认启用多租户架构:
- 安装完成后默认存在一个根容器
CDB$ROOT,以及一个默认的可插拔数据库XEPDB1 - 你当前用SYS连接的是根容器
CDB$ROOT,这里只能创建公共用户,用户名强制要求以C##/c##前缀开头,不符合命名规则就会触发该报错 - 你网上搜到的修改
_ORACLE_SCRIPT参数的方法是绕过规则的非常规操作,不建议学习阶段使用,会混淆多租户架构的核心概念
图形界面操作步骤(无需执行任何SQL)
首先明确:学习阶段99%的场景你需要的是创建普通业务用户,这类用户要建在可插拔数据库XEPDB1中,不需要加前缀,操作如下:
第一步:配置PDB的连接(未创建过该连接时执行)
- 打开Oracle SQL Developer,在左侧「连接」面板右键,选择「新建连接」
- 填写连接参数:
- 名称:自定义即可,比如
SYS_XEPDB1 - 用户名:
SYS - 密码:你安装Oracle时设置的SYS密码
- 角色:下拉选择
SYSDBA - 主机名:默认填
localhost - 端口:默认填
1521 - 连接类型选择「服务名」,输入
XEPDB1
- 名称:自定义即可,比如
- 点击「测试」,提示连接成功后点击「保存」再「连接」,此时你已经用SYS账号连接到可插拔数据库XEPDB1,在这个环境下创建用户没有前缀限制
第二步:图形化创建新用户
- 在刚连接好的
SYS_XEPDB1连接树下,找到「其他用户」节点,右键选择「创建用户」 - 在弹出的创建用户窗口中填写配置:
- 用户名:填写你想要的名称,不需要加
C##前缀 - 密码:设置自定义密码,按需勾选「密码过期」「账户锁定」选项
- 默认表空间:建议选择
USERS - 临时表空间:默认
TEMP即可
- 用户名:填写你想要的名称,不需要加
- 切换到「角色」/「系统权限」面板,按需给用户分配权限,学习场景可以勾选
CONNECT、RESOURCE角色 - 所有配置完成后点击「确定」,用户即可创建成功,不会触发报错
特殊场景:需要在根容器创建公共用户的操作
如果你确实需要在根容器创建全局生效的公共用户,无需切换连接,直接用原有连接到CDB$ROOT的SYS账号操作即可:
- 右键「其他用户」选择「创建用户」
- 用户名必须以
C##开头,比如C##STUDY_USER,其余配置和普通用户创建逻辑一致,点击确定即可完成创建,不需要执行任何SQL语句
补充说明
不需要更换SYS以外的用户创建新用户,SYS拥有数据库最高管理权限,只要连接到了正确的容器/数据库,完全可以完成所有用户创建操作。
内容的提问来源于stack exchange,提问作者mareapurple
相关产品推荐
相关产品推荐

