今天将备份的数据库还原到一台新的电脑上,首先要创建用户,执行如下语句:

create user fxhy
identified by "123456"
default tablespace USERS
temporary tablespace TEMP;

  结果出现了一个错误:

  

  我们可以看出提示的是:公共用户名或角色无效。这时候我就郁闷了,呃,查资料,发现创建用户的时候要以c##开头,也就是刚才的创建语句应该这么写:

create user c##fxhy
identified by "123456"
default tablespace USERS
temporary tablespace TEMP;

  就这样试了一下,果真创建成功了,可是为什么要这么做,有些不明白,然后继续查资料,原因是这样的:

  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创建新用户提示公共用户名或角色无效的更多相关文章

  1. Mysql创建新用户后无法登录,提示 Access denied for user 'username'@'localhost' (using password: YES)

    MySQL创建新用户后无法登录,提示 Access denied for user 'username'@'localhost' (using password: YES) ,多半是因为存在匿名用户, ...

  2. 创建新用户,及用新用户名和密码登录--------------DCL

    创建用户基本语法:    creat user 用户名@"ip地址" identified by "密码" 登录数据库以后:用show databases; 显 ...

  3. Ubuntu创建新用户的正确姿势

    作者按:因为教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步<Ubuntu 创建新用户的正确姿势>原文地址.更欢迎来我的小站看更多原创内容:godbmw.com,进行&q ...

  4. Linux下如何创建新用户

    Linux下如何创建新用户 Linux系统中,只有root用户有创建其他用户的权限.创建过程如下:   useradd -d /home/newuser newuser(设定了该用户的主目录和用户名) ...

  5. TestCase--网站创建新用户管理模块

    对于web测试,用户权限管理模块是必测的一个点,所以今天就来总结一下创建新用户管理模块的测试用例 参考图如下: 测试用例设计如下: 一.功能测试 1.  什么都不输入,单击“立即提交”,页面是否有提示 ...

  6. linux创建新用户以及修改密码

    1. 使用root账户创建新用户 useradd webuser 2. 修改新增的用户的密码 passwd webuser 这时候会提示你输入新的密码: 注意:不要用su webuser进入该账户修改 ...

  7. 给sftp创建新用户、默认打开和限制在某个目录

    一.环境: CentOS 6.8 使用 FileZilla 进行 sftp 连接 二.背景 给外包的工作人员提供我司服务器的某一目录的访问(包括读写)权限,方便他们部署代码文件. 之所以是某一目录的访 ...

  8. mysql创建新用户及新用户不能本地登陆的问题

    最近在搭建hadoop集群,主节点上面安装的MySQL数据库,对着方面不熟悉,为hive.Ooize等服务统一使用的root账号和密码,为了安全一些库对于某些用户是不可见的,所以需要针对不同的服务设置 ...

  9. ubuntu创建新用户

    ubuntu和windows一样,可以任意创建或者删除新的用户,windows下比较简单,ubuntu下需要使用命令,不过操作起来不是很繁琐,所以我尽量写的详细一些.  如何创建ubuntu新用户? ...

随机推荐

  1. rpc,客户端与NameNode通信的过程

    远程过程:java进程.即一个java进程调用另外一个java进程中对象的方法. 调用方称作客户端(client),被调用方称作服务端(server).rpc的通信在java中表现为客户端去调用服务端 ...

  2. 二叉搜索树算法详解与Java实现

    二叉查找树可以递归地定义如下,二叉查找树或者是空二叉树,或者是满足下列性质的二叉树: (1)若它的左子树不为空,则其左子树上任意结点的关键字的值都小于根结点关键字的值. (2)若它的右子树不为空,则其 ...

  3. 基于memcached的单机轻量级通用缓存库minicached的实现

    一.前言 之前拜读过淘宝子柳的<淘宝技术这十年>之大作,深知缓存技术在系统优化中起着一个举足轻重的作用.无论是文件系统静态文件,数据库的访问,乃至网络数据的请求,只要是与内存访问速度相差较 ...

  4. 如何计算ModBus超时时间?

    波特率:每秒钟通过信道传输的信息量称为位传输速率,也就是每秒钟传送的二进制位数,简称比特率.比特率表示有效数据的传输速率,用b/s .bit/s.比特/秒,读作:比特每秒. 如9600b/s:指总线上 ...

  5. 有return的情况下try catch finally的执行顺序(最有说服力的总结)

    结论:1.不管有木有出现异常,finally块中代码都会执行:2.当try和catch中有return时,finally仍然会执行:3.finally是在return后面的表达式运算后执行的(此时并没 ...

  6. SCO连接SCOM报警

    当SCOM中出现红色警报时,在目标计算机上运行一个程序: 1.新建Runbook,添加一个Monitor Alert 2.设置Monitor Alert属性,选择connection,设置警报过滤条件 ...

  7. linux centos6 NAT 端口转发

    有很多时候我们为了安全,需要将例如数据库服务器放到内网中.但是有些时候又系统给外网开一个端口,这时就可以利用外网的服务器进行一个端口转发.今天我们以centos6 为例进行端口转发配置. 首先vi / ...

  8. 在Image控件中绘制文字

    //Canvas 在Image控件中绘制文字 procedure TForm1.Button1Click(Sender: TObject);begin  image1.Canvas.Font.Size ...

  9. 17周 oj 比較大小 类模板

    /*声明一个类模板,利用它分别实现两个整数. 浮点数和字符的比較,求出大数和小数. 说明:在类模板外定义各成员函数. 输入两个整数.两个浮点数和两个字符 从大到小输出两个整数.两个浮点数和两个字符 * ...

  10. 期望-pku-oj-1055:Tree

    题目链接: http://poj.openjudge.cn/practice/1055/ 题目意思: 给出的树最大节点个数为n的情况下,求树上点深度的期望. 解题思路: 数学期望公式的推导. 自己先画 ...