问题
在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. Android 5.0及以上实现屏幕截图
  2. 浅谈数据分析中的“暗物质”
  3. Shell数值及字符串比较
  4. linux mongodb 升级,MongoDB2.6简单快速升级到3.0
  5. 听说你决定当全职自由漏洞猎人了?过来人想跟你聊聊
  6. hdu 3746 kmp的next数组理解
  7. 无法更新 TeamViewer 服务属性是什么意思?
  8. 向量对矩阵列空间的投影_向量(阵列)处理和超标量处理器
  9. 将solidworks建的机器人模型导入到ros中
  10. 图灵工业机器人说明书_从2020世界人工智能大会,看工业机器人领域领军企业布局|机器人大讲堂...
  11. 捡到的苹果手机怎么解id锁_苹果手机软解和硬解的区别
  12. RFS实例登录126邮箱/利用cookie登陆百度
  13. 2019_Generative Adversarial Networks for Extreme Learned Image Compression
  14. uni-app实现生成二维码功能
  15. android 串口 汉字乱码,Arduino软串口出现乱码
  16. ODL构建Hello项目
  17. wep加密方式是什么_什么是WEP(有线等效保密)?
  18. CPU保护模式 分页表 描述符 段选择子
  19. php记录上次观看记录,PHP 记录用户访问记录
  20. mshtml与System.Windows.Forms.HtmlElement

热门文章

  1. fcc jQuery 练习
  2. 【校内互测】Sunshine’s string(merge) (状压dp)
  3. Ubuntu Linux环境下的Android开发环境的配置
  4. 强制推送代码到远程仓库
  5. 老鸟对菜鸟的一些建议
  6. 【报告分享】2022戴森品牌社媒营销分析报告:搭“消费升级”快车,走“升维打击”路线.pdf(附下载链接)...
  7. Learning Shape Priors for Single-View 3D Completion and Reconstruction
  8. Facebook AI研究员田渊栋:2021年年终总结
  9. cydia源_Cydia错误提示解决大全
  10. qt向服务器传输文字_Qt实现客户端与服务器消息发送