首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误: ORA-65096: oracle中无效的通用用户或角色名称

错误: ORA-65096: oracle中无效的通用用户或角色名称
EN

Stack Overflow用户
提问于 2015-10-25 14:46:14
回答 11查看 519.9K关注 0票数 194

我刚刚安装了Oracle,它缺少Scott模式。所以我正试图自己产生它。我得到了Scott模式的sql脚本,但是当我尝试运行查询时:

代码语言:javascript
运行
复制
create user Scott identified by tiger; 

它显示以下错误:

ORA-65096: oracle中无效的通用用户或角色名称。

基本上,它不允许我创建一个用户Scott。

为什么,我怎么才能解决我的问题?

EN

回答 11

Stack Overflow用户

发布于 2017-01-05 16:48:58

99.9%的错误ORA-65096: invalid common user or role name意味着您在应该登录到PDB时登录到CDB。例如,如果使用默认的19c安装设置,则应该登录到ORCLPDB ( PDB),而不是ORCL ( CDB)。

危险--如果您坚持以错误的方式创建用户,请按照以下步骤操作。

设置这种无文档化的参数(如前面的下划线所示)只应在Oracle支持的指导下进行。在没有这种指导的情况下更改这些参数可能会使您的支持合同失效。所以你要冒着自己的风险去做。

具体来说,如果设置"_ORACLE_SCRIPT"=true,将对列ORACLE_MAINTAINED进行一些数据字典更改,将其设置为'Y‘。这些用户和对象将被错误地排除在一些DBA脚本之外。它们可能被错误地包含在某些系统脚本中。

如果您对上述风险没有意见,并且不希望以正确的方式创建普通用户,请在创建用户之前运行以下命令:

代码语言:javascript
运行
复制
alter session set "_ORACLE_SCRIPT"=true;  

我在这里找到了答案

票数 457
EN

Stack Overflow用户

发布于 2015-10-25 15:01:28

我刚安装了oracle11g ORA-65096: oracle中无效的通用用户或角色名称

不,您已经安装了Oracle12c。该错误只能发生在12c上,而不能发生在11g上。

始终检查您的数据库版本,最多4位小数点:

代码语言:javascript
运行
复制
SELECT banner FROM v$version WHERE ROWNUM = 1;

Oracle 12c多租户容器数据库有:

  • 根container(CDB)
  • 和/或零,一个或多个可插拔databases(PDB).

您必须将数据库创建为容器数据库。但是,您试图在容器中创建用户,即CDB$ROOT,但是,您应该在可插拔数据库中创建用户。

不应该在容器中创建与应用程序相关的对象,容器保存可插拔数据库的元数据。一般数据库操作应该使用可插拔数据库。否则,不要将其创建为容器,也不要使用multi-tenancy.。但是,12 cR2仍然不能创建非容器数据库。

最有可能的是,示例模式可能已经安装好了,您只需要在可插拔数据库中解锁

例如,如果您将可插拔数据库创建为pdborcl

代码语言:javascript
运行
复制
sqlplus SYS/password@PDBORCL AS SYSDBA

SQL> ALTER USER scott ACCOUNT UNLOCK IDENTIFIED BY tiger;

sqlplus scott/tiger@pdborcl

SQL> show user;
USER is "SCOTT"

要显示PDB并从根容器连接到可插拔数据库:

代码语言:javascript
运行
复制
SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        READ WRITE NO

SQL> alter session set container = ORCLPDB;

Session altered.

SQL> show con_name;

CON_NAME
------------------------------
ORCLPDB

我建议你读,Oracle 12c安装后强制步骤

Note:在生产系统中,建议使用_ORACLE_SCRIPT隐藏参数设置为true的答案是危险的,并且可能会使您的支持合同失效。注意,如果没有咨询Oracle支持,就不要使用隐藏参数

票数 98
EN

Stack Overflow用户

发布于 2018-03-19 11:00:48

在Oracle 12c及更高版本中,我们有两种类型的数据库:

  1. 容器DataBase (CDB)
  2. 可插拔式DataBase。

如果您想要创建一个用户,您有两种可能:

  1. 您可以创建一个“容器用户”,也就是“公共用户”。 普通用户属于CBD以及当前和未来的PDBs。这意味着它们可以在Container中执行新的操作,也可以根据指定的权限执行可插拔的DBs。 create user c##username identified by password;
  2. 您可以创建一个“可插入用户”,也就是“本地用户”。 本地用户只属于一个PDB。这些用户可能被授予管理特权,但仅对其存在的PDB。为此,您应该连接到这样的可插拔数据: alter session set container = nameofyourpluggabledatabase; 在那里,您可以像通常那样创建用户: create user username identified by password;

不要忘记指定要使用的表空间,它在DB的导入/导出过程中可能很有用。有关it的更多信息,请参见此8003.htm#SQLRF01503

票数 93
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33330968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档