如何从 Oracle SQL Developer 解决 ORA-65096?

Posted

技术标签:

【中文标题】如何从 Oracle SQL Developer 解决 ORA-65096?【英文标题】:How to solve ORA-65096 from Oracle SQL Developer? 【发布时间】:2021-11-12 00:57:36 【问题描述】:

我正在尝试从 Oracle SQL Developer 创建一个新用户。我与用户 Sys 和我在安装 Oracle Database XE 18c 时输入的密码建立了连接。

在创建用户时出现错误ORA-65096,我已经搜索了互联网,我找到的解决方案是这样写:

alter session set "_ORACLE_SCRIPT" = true;

但是,我想知道是否可以在不使用任何 SQL 语句或脚本的情况下创建新用户并从 Oracle SQL Developer 界面执行此操作,我是否必须使用与 Sys 不同的用户登录才能创建新用户用户?或者我该怎么办?有人可以给我一个详细的解释吗?我正在学习如何使用这个数据库,我想尝试了解我在做什么。

【问题讨论】:

您检查错误的含义了吗?您似乎试图在根 CDB 下创建一个“普通”用户,这是不建议的。连接到您的 pdb 并在那里创建一个用户。在根 CDB 中,所有应用程序用户的名称都必须以 c## 开头。您显示的更改会话由 oracle 内部使用,以在创建他们拥有的标准用户时规避此问题(除其他外)。 【参考方案1】:

oerr ora 65096

65096, 00000, "无效的普通用户或角色名" // *原因:试图创建一个具有名称的普通用户或角色 // 这对普通用户或角色无效。除了 > // 用户名和角色名、普通用户名和角色名的常用规则 // 必须只包含 ASCII 字符,并且必须包含 > 前缀 // 在 common_user_prefix 参数中指定。 // *Action: 指定一个有效的普通用户或角色名称。

这意味着您连接到根容器,而不是连接到应该构建应用程序的常规插件数据库 (pdb)。您的解决方案不是否决设置以启用在根容器中构建应用程序,而是连接到已用于托管您的应用程序的 pdb。

您可以通过查看 v$pdbs 来检查可用的 pdb。特殊的 pdb cdb$root 就像名称已经试图说明的那样,是根容器。 show PDBS 将给出类似的输出。

使用alter session set container = [pdb_name]; 可用于切换到您选择的适用常规规则的容器。

更好的是使用 sqlnet 直接连接到该 pdb。

【讨论】:

@astentx 感谢您的编辑。我仍然在为这种格式而苦恼....

以上是关于如何从 Oracle SQL Developer 解决 ORA-65096?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PL SQL Developer 的连接中找出 Oracle 连接字符串?

如何使用 Oracle SQL Developer 导出数据?

如何从 case when 中删除 NULL 然后输出 Oracle SQL Developer

Oracle SQL Developer - 如何生成 ER 图

如何将 .JSON 文件导入 Oracle SQL Developer

如何在 Oracle Sql Developer 中选择特定的列标题