问题
在Oracle 12c 环境下, 使用命令行或是SQL Developer 创建用户失败, 错误信息报:

ORA-65096: 公用用户名或角色名无效
65096. 00000 -  "invalid common user or role name"

发生场景

这里以创建一个用户名是SB,密码是 oscar , 默认的表空间是SB 为例(SB是自行创建的表空间),

使用以下命令创建:

create user SB identified by oscar default tablespace SB;

出现错误界面如下:

转到SQL Develop开发工具创建, 报相同的错误。

原因及解析
Oracle 12C 提出了多租户环境(Multitenant Environment)和容器(Container)的概念, 区分了两个层级:

  1. CDB , Container Database, 数据库容器
  2. PDB, Pluggable Database, 可插拔数据库
    关系如下图:

在数据库中建立的用户对应以上两个层级:

  • COMMOM USERS , 普通用户, 一般建立在CDB层, 用户名需要以 C#或C##开头;
  • LOCAL USERS , 本地用户, 仅建立在PBD层,建立的时候需要指定容器

从上面的错误 “invalid common user or role name” 来看, COMMOM USERS 需要以 C#或C##开头, 所有这里的用户名不合规范。

那如何查看当前环境的所在的容器呢? 可以通过以下命令查看:

select sys_context ('USERENV', 'CON_NAME') from dual;

这里查看的结果如下:

当前所在的是CDB容器。

解决方法
解决方法有两种:

  • 如果确定需要创建在CDB容器中, 则在用户名前面加C#或C## (最好是加上C##, 部分环境加C#会不行)
  • 如果想保持原用户名,可以将用户创建到PDB容器中

创建用户到PDB步骤:

  1. 查看pdb 容器信息
select con_id,dbid,NAME,OPEN_MODE from v$pdbs;

查询结果如下:

  1. 打开PDBORCL 数据库
alter pluggable database ORCLPDB open;

注意: 这个命名需要使用它sysdba 执行才有权限

sqlplus / as sysdba
  1. 再次使用 select con_id,dbid,NAME,OPEN_MODE from v$pdbs; 命令, 可以发现ORCLPDB 的OPEN_MODEL 从MOUNTED (已挂载)变成 READ WRITE(可以读写)了。

  2. 切换当前Session到 ORCLPDB容器

alter session set container=ORCLPDB;

切换后, 可以使用 select sys_context ('USERENV', 'CON_NAME') from dual; 查看是否切换成功。

  1. 切换成功后再创建用户就可以了。需要注意,该用户对应的表空间也必须在ORCLPDB 中。

一句话总结

Oracle 12c创建用户要么以C##开头, 要么切换到PDB容器创建。


Oracle 12C 创建用户失败 - ORA-65096 invalid common user or role name相关推荐

  1. oracle 12c 创建PDB用户即Local User (PDB与CDB)

    Oracle 12C用户创建与表空间分配  数据库安装完成后,首先用系统用户链接数据库容器(CDB), 在数据库容器(CDB)中创建表空间'imei' SQL>create  tablespac ...

  2. oracle 12c创建可插拔数据库(PDB)与用户详解

    前言 由于oracle 12c使用了CDB-PDB架构,类似于docker,在container-db内可以加载多个pluggable-db,因此安装后需要额外配置才能使用. 一.修改listener ...

  3. mysql 140824,Oracle 12c创建可插拔数据库(PDB)及用户

    由于Oracle 12c使用了CDB-PDB架构,类似于docker,在container-db内可以加载多个pluggable-db,因此安装后需要额外配置才能使用. 一.修改listener.or ...

  4. oracle12c非可插拔数据库,oracle 12c创建可插拔数据库(PDB)与用户详解

    前言 由于oracle 12c使用了CDB-PDB架构,类似于docker,在container-db内可以加载多个pluggable-db,因此安装后需要额外配置才能使用. 一.修改listener ...

  5. 图解Oracle 12c创建数据挖掘(Data Miner)用户dmuser

    主要参考文章 http://docs.oracle.com/cd/E11882_01/datamine.112/e16807/quickstart.htm#DMADM206 http://www.or ...

  6. Oracle 12c创建表空间、用户

    目录 一.前言 二.创建表空间 三.创建用户 四.删除表空间.用户 五.CDB与PDB相关文章 一.前言 Oracle 12c 中新增加了可插入数据库的概念,即PDB(Pluggable Databa ...

  7. Oracle 19c 创建用户、授权实践

    数据据库.用户.CDB与PDB之间的关系 基本概念: Multitenant Environment:多租户环境 CDB(Container Database):数据库容器 PD(Pluggable ...

  8. oracle 12c创建归档,实测创建 Oracle 12C Dataguard

    Oracle 12C Dataguard 环境:centOS 6.4 64bit   oracle 12C 12.1.0.1.0 - 64bit 主库:10.168.9.52   sid=bbc  d ...

  9. 12C创建用户问题 ORA-65096

    SQL*Plus: Release 12.1.0.1.0 Production on 星期日 7月 21 16:07:55 2013 Copyright (c) 1982, 2013, Oracle. ...

最新文章

  1. 前、后端分离权限控制设计和实现思路
  2. Hadoop学习之MapReduce(五)
  3. 微信支付开发(2) 微信支付账号体系
  4. BUUCTF(pwn)护网杯_2018_gettingstart
  5. (二)Docker中以redis.conf配置文件启动Redis
  6. python爬取js动态网页_Python 爬取网页中JavaScript动态添加的内容(一)
  7. 《常用控制电路》学习笔记——数控锁相环调速电路
  8. LeetCode 413 等差数列划分
  9. java 蓝桥杯算法提高 身份证号码升级(题解)
  10. android 动态改变listview的内容
  11. 如何在Mac 上的“终端”中限制回滚行数?
  12. 嵌入式Linux开发板移植SSH
  13. case …when… 与纵表转横表
  14. Foxmail发送邮件,发送邮件工具类
  15. 曙光服务器如何重新设置u盘启动_u盘装曙光服务器 曙光服务器进bios设置u盘启动...
  16. Hive-内置函数:根据身份证规则从身份证号提取年龄和性别
  17. 数据安全对物联网越来越重要
  18. SATA OOB CTS测试项解析
  19. 秒懂SpringBoot之Spring对象生命周期与扩展点浅尝辄止
  20. 知识图谱学习(一)(笔记整理)

热门文章

  1. 【清北前紧急补课8】A % B Problem
  2. Ant 基本语法的使用示列
  3. php.ini中Magic_Quotes_Gpc开关设置
  4. 随手小记 才知道[阁楼藏尸|未来闪影]
  5. WPF引用外部类库中的资源文件提示不能找到的解决方法
  6. brew update失败提示:/System/Library/Frameworks/Ruby.framework/。。。解决方法
  7. 绝对不能错过!计算机视觉Polygon Mesh Processing读书笔记——3
  8. java小球游戏项目实战
  9. vue滚动条禁止_vue.js中实现禁止浏览器滚动方法
  10. java读取一个应用程序_Java IO – 在写入其他应用程序时读取一个大文件