12c推出了可插拔库,管理用户也分为两种:本地用户和公用用户。本地用户是指在插拔数据库(PDB)中的用户,和12c之前的版本没有什么区别。公用用户只存在于可插拔环境中,在传统的数据库环境中不存在这种应用。怎么理解公用用户呢?可以简单的把它当做容器(CDB)用户,可以在各个通用与所有可插拔数据库(PDB)中使用。这个用户就像是小区的物业管理员,由小区物业来任命并且可以管理小区所有用户。
 
如果第一次登录CDB数据库,用传统方式创建用户会报错,这就是因为在CDB环境创建的用户为公共用户,语法和普通用户不同。
 
1. 使用sqlplus登录可插拔数据库
[oracle@snow ~]$ sqlplus / as sysdba
 
2. 通过con_name能看到当前登录的环境是CDB根库,CDB包含一个名为PDB1的可插拔库。
SYS@cdb > show con_name pdbs;
 
CON_NAME
------------------------------
CDB$ROOT
 
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
 
3. 创建公用用户bighero, 需要使用C##或者c##作为该用户名的开头。
SYS@cdb > create user c##bighero identified by bighero;
 
User created.
 
如果使用传统创建用户的方法会报错
SYS@cdb > create user bighero identified by bighero;
create user bighero identified by bighero
*
ERROR at line 1:
ORA-65096: invalid common user or role name
 
4. 创建公用角色, 同公用用户一样也需要使用C##或者c##作为角色名的开头。
SYS@cdb > create role c##myroles container = all;
 
将dba角色授予公用角色c##myroles, 适用范围为所有PDB
SYS@cdb > grant dba to c##myroles container = all;
 
将公用角色授予公用用户, 使用范围为所有PDB
SYS@cdb > grant c##myroles to c##bighero container = all;
 
以上操作也可以使用grant xx to user的方式使用一条语句完成
SYS@cdb > grant dba to c##bighero identified by bighero container = all;
 
5. 下面使用公用用户分别登录CDB、PDB看看是否通用。 登录PDB使用了tnsnames中已经配置好的链接字符串@pdb1
[oracle@snow ~]$ sqlplus c##bighero/bighero
C##BIGHERO@cdb > show con_name
 
CON_NAME
------------------------------
CDB$ROOT
 
[oracle@snow ~]$ sqlplus c##bighero/bighero@pdb1
C##BIGHERO@pdb1 > show con_name
 
CON_NAME
------------------------------
PDB1
 
链接字符串如下:
[oracle@snow admin]$ cat tnsnames.ora
pdb1=
 (DESCRIPTION =
 (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.228.12)(PORT = 1521))
 (CONNECT_DATA =
 (SERVER = DEDICATED)
 (SERVICE_NAME = pdb1)
 )
)
 
6. 在PDB中创建用户和创建普通用户就没有什么区别了
create user baymax identified by baymax
default tablespace baymax_comp
temporary tablespace temp
quota unlimited on baymax_comp;
 
7. CDB和PDB之间的切换方式
SYS@cdb > alter session set container = pdb1;
 
SYS@cdb > alter session set container = cdb$root;

全文完

Oracle 12c 创建用户的更多相关文章

  1. Oracle 12c创建用户时出现“ORA-65096: invalid common user or role name”的错误

    这篇文章主要介绍CDB和PDB的基本管理,资料来源oracle官方. 基本概念: Multitenant Environment:多租户环境 CDB(Container Database):数据库容器 ...

  2. Oracle 12C 创建用户连接pdb

    测试环境: C:\ora12c\product\12.1.0\dbhome_1\BIN>sqlplus.exe /nolog SQL*Plus: Release 12.1.0.1.0 Produ ...

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

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

  4. oracle 数据库创建用户并授权

    oracle 数据库创建用户并授权 备注: userName 为用户名,123456 为密码 drop user userName cascade; create user userName iden ...

  5. Oracle 12c 创建新的数据库实例、用户

    前提:安装好了Oracle 12c数据库,已有一个数据库实例xe,登录用户/密码:system/oralce 我用的是docker安装的Oracle 12c的实例: docker run --name ...

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

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

  7. oracle 12c创建可插拔数据库(PDB)及用户

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

  8. win8下Oracle 12c 创建新用户并分配表空间

    这个应该算还是比较简单吧,找了个博客照着搞,有点不同的地方改改,自己再记录下. 步骤是这样: 1.先用SYSTEM登录SOL Plus, 2.创建一个临时表空间,再创建一个表空间,然后再创建一个用户 ...

  9. oracle 命令创建用户 、授权、数据库导入、导出

    最近在使用oracle,经常要导入导出数据,命令很简单,却经常忘记,所以记下来.. drop user yfplss cascade;--登录system用户删除已存在的用户名,该用户下的所有东西都被 ...

随机推荐

  1. 两段 PHP 代码比较优劣

    // 代码一 public function getPCA($level = false) { $results = array(); $where = $level ? " where f ...

  2. Android-FileIOUtils工具类

    文件读写相关工具类 public final class FileIOUtils { private FileIOUtils() { throw new UnsupportedOperationExc ...

  3. Hibernate4获取Connection,ResultSet对象

    项目中需要一个json对象,封装的时候,需要数据的列名. 在jdbc里面,可以有个ResultMetaData对象获取列名字.因为我用的是hibernate,这个框架已经封装了很多,一般是难以获得re ...

  4. EAS系统环境的搭建

    (一)应用服务器配置 1.先建立好程序需要部署的文件夹,如D:\AppServer\,此目录下包含如下几个子目录: XClient(客户端升级程序放置的目录,此目录下应包含Config和Files子目 ...

  5. .NET框架源码解读之准备CLR源码阅读环境

    微软发布了CLR 2.0的源码,这个源码是可以直接在freebsd和windows环境下编译及运行的,请在微软shared source cli(http://www.microsoft.com/en ...

  6. 使用echarts绘制漂亮的渐变键盘仪表盘

    echarts官方示例和默认样式都比较难看,经过一顿捣鼓实现比较漂亮的渐变仪表盘. 第一步:设置轴线 将图表轴线.label.分割线.隐藏,只保留刻度,然后修改刻度样式达到最终效果.不过要注意的是ax ...

  7. java—实现一个监听器HttpServletRequest的创建销毁、在线人数 (56)

    在JavaWeb中的监听器分类 在Javaweb中存在三个被监听对象: HttpServletRequest HttpSessoin ServletContext 监听者 被监听者 监听到事件对象 H ...

  8. java学习笔记—第三方数据库连接池包1(29)

    第一步:导入dbcp包 第二步:通过核心类连接数据 BasicDataSource它是javax.sql.DataSrouce的子类. 一个工具类:BasicDataSourceFactory. 手工 ...

  9. iOS水波纹效果

    最近也是在学习一些动画效果的实现,也找了一些Demo进行练习,先放出原地址http://www.cocoachina.com/ios/20161104/17960.html,感谢大神的分享,作者对实现 ...

  10. 使用Fiddler代理调试本地手机页面

    从事前端开发的同学一定对 Fiddler 不陌生,它是一个非常强大的http(s)协议分析工具.我们知道如何在电脑上调试页面请求,但在手机端你没有这么多强大好用的调试工具来调试你的webapp,如果你 ...