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. View Pi's Status on WebBrowser

    1. install php and cgi support sudo apt-get install php5-common sudo apt-get install php5-cgi sudo a ...

  2. EAS 最大单据号获取

    BaseService using System; using System.Collections.Generic; using System.Linq; using System.Text; us ...

  3. Js 事件详解

    1.事件流 1.1 事件流 描述的是在页面中接受事件的顺序 1.2 事件冒泡 由最具体的元素接收,然后逐级向上传播最不具体的元素的节点(文档) 1.3 事件捕获 最不具体的节点先接收事件,而最具体的节 ...

  4. JS-获取任意html节点属性

    获取节点属性:   确定获取

  5. “全栈2019”Java多线程第十六章:同步synchronized关键字详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  6. Mybatis框架 使用接口Mapper实现数据库的crud操作

    Mybatis的Mapper接口方式实现简单crud操作: 1.创建实体类 与数据库对应 我的实体类是<Student>   package com.hxzy.mybatis.pojo; ...

  7. RecyclerView的通用适配器

    本来这一个主题应该早就写了,只是项目多,属于自己的时间不多,所以现在才开动!! 前一段时间写了一篇文章,是关于ListView,GriView万能适配器,没有看过的同学,可以先看看那篇文章,然后在来学 ...

  8. [RHEL] 配置 LVM 卷

    [RHEL] 配置 LVM 卷 一.Introduction 基础预览 :LVM 认知与扩容操作 高端实战:Linux系统如何迁移至LVM磁盘 之前转过一篇文章 LVM分区在线扩容 ,其原因是我需要给 ...

  9. c++之随堂笔记

    1.指针篇 给指针赋值时,只能等号右边只能使用&符号将一个对象的地址赋值给指针,不能直接把一个具体的数或者字符串直接赋值给指针. 举例: int* ptr_num = 100;  //这种写法 ...

  10. UITableView 头部效果/放大/移动跟随效果

    [self.tableView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOp ...