分享知识-快乐自己:oracle12c创建用户提示ORA-65096:公用用户名或角色无效
今天在oracle12c上创建用户,报错了。如下图:

我很郁闷, 就打开了oracle官方网站找了下, 发现创建用户是有限制的。
2.解决方案
创建用户的时候用户名以c##或者C##开头即可。
错误写法: create user zhaojiedi identified by oracle;
正确写法: create user c##zhaojiedi identified by oracle;
注: 如果你不纠结为啥的,上面的解决方案就可以满足你的要求了,下面的内容可以不用看了。
========================================================================
========================================================================
3. 解决过程
下面的流程是我对于这个问题的解决过程, 也写出来分享分享。
我进入oracle 12c官方文档的
依次进入以下页面
Managing Users and Securing the Database
Oracle Database Security Guide
经过一番查找,在Creating User Accounts 页面找到了如下图的内容:

上面提示的很明确了。 创建公共用户名必须要以c##或者C##开头了。我们上面的报错了。 就是因为我们创建公共用户没用以c##或者C##开头的。
到此我们就知道具体错误的原因了。 那就赢的解决方案就有了哈。
如果你还纠结公用用户和本地用户是啥东东的,Creating User Accounts 页面就有简介。
========================================================================
有些不明白,然后继续查资料,原因是这样的:
Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。
CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。
在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。
而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系。下面是官方文档关于CDB与PDB的关系图。

CDB组件(Components of a CDB)
一个CDB数据库容器包含了下面一些组件:
ROOT组件:
ROOT又叫CDB$ROOT, 存储着ORACLE提供的元数据和Common User,元数据的一个例子是ORACLE提供的PL/SQL包的源代码,Common User 是指在每个容器中都存在的用户。
SEED组件:
Seed又叫PDB$SEED,这个是你创建PDBS数据库的模板,你不能在Seed中添加或修改一个对象。一个CDB中有且只能有一个Seed. 这个感念,个人感觉非常类似SQL SERVER中的model数据库。
PDBS:
CDB中可以有一个或多个PDBS,PDBS向后兼容,可以像以前在数据库中那样操作PDBS,这里指大多数常规操作。
这些组件中的每一个都可以被称为一个容器。因此,ROOT(根)是一个容器,Seed(种子)是一个容器,每个PDB是一个容器。每个容器在CDB中都有一个独一无二的的ID和名称。
怎么查看数据库是否为CDB?
执行下面这条语句:
select CDB from v$database;
如果得到的结果为YES,那么就是CDB的数据库,否则,则不是。
怎么查看当前的容器?
执行下面这条语句:
show con_name;
执行结果如下:

怎么查看CDB中的PDB信息?
执行下面这条语句:
select con_id, dbid, guid, name , open_mode from v$pdbs;
执行结果如下:

启动PDB数据库的方式:执行下面这条语句:
alter pluggable database PDBORCL open;
执行结果如下:

关闭PDB数据库的方式:执行下面这条语句:
alter pluggable database PDBORCL close;
执行下面这条语句:

在容器间切换:
alter session set container=PDBORCL;
alter session set container=CDB$ROOT;
--------------------------------------------------------------分割线------------------------------------------------------------------------
那么说了这么多,怎么就可以创建用户而不用加c##了呢,我在这里创建一个新的数据库,步骤如下:
打开 Database Configuration Assistant

出现如下界面:

点击“下一步”出现如下界面,在创建数据库的时候将“创建为容器数据库”项取消勾选。

这样新创建的数据库就可以使用了。
分享知识-快乐自己:oracle12c创建用户提示ORA-65096:公用用户名或角色无效的更多相关文章
- oracle12c创建用户提示ORA-65096:公用用户名或角色无效
1.背景 以前一直用的是oracle11g,创建用户一直没有问题, 今天在oracle12c上创建用户,报错了.如下图: 我很郁闷, 就打开了oracle官方网站找了下, 发现创建用户是有限制的. 2 ...
- Oracle12c创建新用户提示公共用户名或角色无效
今天将备份的数据库还原到一台新的电脑上,首先要创建用户,执行如下语句: create user fxhy identified " default tablespace USERS temp ...
- oracle12c创建用户指定表空间
--1.创建临时空间 create temporary tablespace zyj_temp tempfile 'D:\app2\user\virtual\oradata\orcl\zyj_temp ...
- oracle12c创建用户等问题
一:前言 这几天我重新装了下电脑,然后自己有试着去装了下oracle11g,结果还是失败了然后我自己又去下载了最新的oracle12c,oracle12c中有两个用户sys和system,scott已 ...
- windows下怎样测试oracle安装是否成功以及在oracle中创建用户并赋予用户权限;和[Err] ORA-65096: 公用用户名或角色名无效的解决方案
测试oracle数据安装是否成功,可按顺序执行以下两个步骤: 测试步骤 1:请执行操作系统级的命令:tnsping orcl 上述命令假定全局数据库名是 orcl.以下是命令执行后的示例(请在cmd命 ...
- Dynamics 365创建用户提示:您正在尝试使用已由其他用户使用的域登录来创建用户。如何解决。
摘要: 本人微信公众号:微软动态CRM专家罗勇 ,回复287或者20181128可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me ...
- oracle12c创建用户和表空间出现的问题
Oracle12c 中,增加了可插接数据库的概念,即PDB,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB).CDB全称为 ContainerDatabase,中文翻译为数据库容器,PDB全 ...
- Oracle12C创建用户遇到ora-6509
引用自:http://blog.itpub.net/29357786/viewspace-1995055/ ORACLE 12C创建用户之ORA-65096 2016年2月25日,一北京北方人瑞教育咨 ...
- oracle sql developer怎么创建用户
学习数据库的时候,用管理员账户,会有会有很多系统自创的表,很麻烦.所以要自己创建普通用户. create user 用户名 identified by 密码;--创建用户 grant connect, ...
随机推荐
- 想提升java知识的同学请进
这是我最近在整理的笔记,大家可以看看. https://www.gitbook.com/book/jackal007/java_more/ 如果觉得有问题可以提出,随时修改. 这个笔记是我花了好多时间 ...
- 全国天气预报数据API调用PHP示例
本代码示例是基于PHP的聚合数据全国天气预报API服务请求的代码样例,使用前你需要: ①:通过https://www.juhe.cn/docs/api/id/39 申请一个天气预报API的appkey ...
- rename命令
rename命令用字符串替换的方式批量改变文件名. 语法 rename(参数) 参数 原字符串:将文件名需要替换的字符串: 目标字符串:将文件名中含有的原字符替换成目标字符串: 文件:指定要改变文件名 ...
- GridView 获取列字段的几种途径
GridView是ASP.NET中功能强大的数据显示控件,它的RowDataBound事件为我们提供了方便的控制行.列数据的途径. 要获取当前行的某个数据列,我在实践中总结有如下几种方法: 1. Ce ...
- linux:date命令(转)
在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便. 1.命令格式: date [参数 ...
- php 字符串内容是数组格式 转换成数组
一个简单的应用.. 例, $str = "array( 'USD'=>'1', 'GBP'=>'0.6494', 'EUR'=>'0.7668' ,'JPY'= ...
- 资源:Localization – 本地化
Resource Dictionary –资源字典 所有的资源项在最终都会被整合到Resource Dictionary中的,也就是说无论是FrameworkElement的Resources,还是W ...
- mysql 5.5主从复制配置
首先将主库现有的要实现主从的数据库原原本本地复制到从库上,目的是一开始就让主从同步,让binlog日志从最新的记录开始同步! 备份: 方法1:快捷导出所要的库如(库goods)[注意:该方法仅适合My ...
- Android_YouthArea之ApeendTextView
这次给我自己的项目打个广告:http://sj.qq.com/myapp/detail.htm?apkName=com.youthcommunity 这款APP 不同于SoHOT是积极的,是年轻人的信 ...
- WebStorm 调试JavaScript
WebStorm强大的调试JavaScript功能 Vue项目调试总结-WebStorm+Chrome调试 WebStorm+Chrome插件JetBrains IDE Support进行实时调试 W ...