理解 Oracle 多租户体系中(12c,18c,19c)创建用户作用域范围
本篇探讨以下几个问题:你可提前猜测下面6个场景语句中,哪几个可以成功创建用户?
1. 在CDB级别中创建公共用户,不带 container 子句的效果;
2. 在CDB级别中创建公共用户,带 container=all 子句的效果;
3. 在CDB级别中创建公共用户,带 container=current 子句的效果;
4. 在PDB级别中创建本地用户,不带 container 子句的效果;
5. 在PDB级别中创建本地用户,带 container=all 子句的效果;
6. 在PDB级别中创建本地用户,带 container=current 子句的效果;
在理解上面问题之前,我们需要提前约定,就是需要提前知道:
1. CDB级别创建的用户称为公共用户,PDB级别创建的用户称为本地用户。
2. 公共用户和角色命名规则对应参数 common_user_prefix ,该参数值默认为 C##。所以,在CDB级别创建公共用户或角色,需要带 C##(也可以更改参数值,但不建议)。
3. PDB$SEED 仅为种子容器,对应 CON_ID 为 2,只读模式,不参与讨论。
演示数据库版本:18.3.0.0.0(18c)
目录
1. CDB 不带 container 默认
2. CDB带 container=all
3. CDB带 container=current
4. PDB不带 container 默认
5. PDB带 container=all
6. PDB带 container=current
1. CDB 不带 container 默认
SQL> show con_id CON_ID
------------------------------
1 SQL> create user c##cabc1 identified by cabc1; User created. SQL> select username,con_id from cdb_users where username='C##CABC1'; USERNAME CON_ID
---------- ------
C##CABC1 1
C##CABC1 3
所以,CDB级别创建公共用户,不带container子句,默认作用域范围:CDB和所有PDB
2. CDB带 container=all
SQL> show con_id CON_ID
------------------------------
1 SQL> create user c##cabc2 identified by cabc2 container=all; User created. SQL> select username,con_id from cdb_users where username='C##CABC2'; USERNAME CON_ID
---------- ------
C##CABC2 1
C##CABC2 3
所以,CDB级别创建公共用户,带container=all子句,默认作用域范围:CDB和所有PDB。和不带效果一样。
3. CDB带 container=current
SQL> show con_id CON_ID
------------------------------
1 SQL> create user c##cabc3 identified by cabc3 container=current;
create user c##cabc3 identified by cabc3 container=current
*
ERROR at line 1:
ORA-65094: invalid local user or role name
所以,CDB级别创建公共用户,不能带 container=current 。因为是公共用户,默认作用于CDB及整个PDB。
4. PDB不带 container 默认
SQL> alter session set container=orders; Session altered. SQL> create user pdbabc1 identified by pdbabc1; User created. SQL> select username,con_id from cdb_users where username='PDBABC1'; USERNAME CON_ID
---------- ------
PDBABC1 3
所以,PDB级别创建本地用户,不带container子句,默认作用域范围:当前PDB
5. PDB带 container=all
SQL> create user pdbabc2 identified by pdbabc2 container=all;
create user pdbabc2 identified by pdbabc2 container=all
*
ERROR at line 1:
ORA-65050: Common DDLs only allowed in root.
所以,PDB级别创建本地用户,无法使用 container=all 子句。
6. PDB带 container=current
SQL> create user pdbabc3 identified by pdbabc3 container=current; User created. SQL> select username,con_id from cdb_users where username='PDBABC3'; USERNAME CON_ID
---------- ------
PDBABC3 3
所以,PDB级别创建本地用户,带 container=current,作用域范围:当前PDB。
综上:
1. 在CDB级别中创建公共用户,不带 container 子句的效果: 作用于当前CDB和所有PDB
2. 在CDB级别中创建公共用户,带 container=all 子句的效果:作用于当前CDB和所有PDB
3. 在CDB级别中创建公共用户,带 container=current 子句的效果:X错误X CDB级别不能使用 CURRENT
4. 在PDB级别中创建本地用户,不带 container 子句的效果:作用于当前PDB
5. 在PDB级别中创建本地用户,带 container=all 子句的效果:X错误X PDB级别不能使用 ALL
6. 在PDB级别中创建本地用户,带 container=current 子句的效果:作用于当前PDB
理解 Oracle 多租户体系中(12c,18c,19c)创建用户作用域范围的更多相关文章
- 理解 Oracle 多租户体系中(12c,18c,19c)Grant授权作用域范围
本篇探讨以下几个问题:你可提前猜测下面6个场景语句中,哪几个授权可以成功执行? 1. 在CDB级别中对用户进行授权,不带 container 子句的效果: 2. 在CDB级别中对用户进行授权,带 co ...
- 理解 Oracle 多租户体系中(12c,18c,19c)Revoke 回收权限作用域范围
本篇探讨以下几个问题:你可提前猜测下面6个场景语句中,哪几个回收可以成功执行? 1. 在CDB级别中对用户进行权限回收,不带 container 子句的效果: 2. 在CDB级别中对用户进行权限回收, ...
- 理解 Oracle 多租户体系中(12c,18c,19c)创建角色作用域范围
本篇探讨以下几个问题:你可提前猜测下面6个场景语句中,哪几个可以成功创建角色? 1. 在CDB级别中创建公共角色,不带 container 子句的效果: 2. 在CDB级别中创建公共角色,带 cont ...
- Oracle 12c 多租户家族(12c 18c 19c)如何在 PDB 中添加 HR 模式
Oracle 12c 多租户家族(12c [12.2.0.1].18c [12.2.0.2].19c [12.2.0.3])如何在 PDB 中添加模式:19c (19.3) 手工添加示例 HR 用户 ...
- OCP培训 Oracle 12c/18c/19c OCP认证实战培训【送OCP优惠名额】
一.OCP培训 Oracle 12c/18c/19c OCP认证全套实战培训[送OCP优惠名额],本课程内容 课程目标: 为满足想参加Oracle OCP考证的学员,风哥设计的一套比较全面OCP实战培 ...
- linux环境中通过useradd命令,创建用户的时候指定用户的base-dir
需求说明: 今天一个同事,问了一个这样的问题,在linux环境中,创建用户的时候,默认的是在/home目录下创建一个与用户名相同的家目录, 如何能够将这个/home更换成一个其他的,比如/opt/ap ...
- oracle 字符集安装错了,修改字符集 及创建用户 表空间 ,删除用户及所有的表
1.首先以sysdba的身份登录上去 conn /as sysdba 2.关闭数据库shutdown immediate; 3.以mount打来数据库,startup mount 4.设置sessio ...
- windows下怎样测试oracle安装是否成功以及在oracle中创建用户并赋予用户权限;和[Err] ORA-65096: 公用用户名或角色名无效的解决方案
测试oracle数据安装是否成功,可按顺序执行以下两个步骤: 测试步骤 1:请执行操作系统级的命令:tnsping orcl 上述命令假定全局数据库名是 orcl.以下是命令执行后的示例(请在cmd命 ...
- Linux的VMWare中Centos7用户和用户管理三个系统文件(/etc/passwd-shadow-group解读)和批量创建用户user及用户工作环境path
Linux 用户和用户组管理 用户工作环境PATH Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用 ...
随机推荐
- Oracle导出警告“EXP-00003: 未找到段 (0,0) 的存储定义”解决
环境:CentOS7.4 Oracle11.2.0.4(搭建rac集群) 问题描述:在使用exp命令执行导出的时候,部分表提示“EXP-00003: 未找到段 (0,0) 的存储定义”警告. 问题 ...
- rabbitmq安装(ubuntu)
本文大量复制自:https://blog.csdn.net/qq_22638399/article/details/81704372 # 安装erlang apt-get install erlang ...
- A tiny problem with integers
# A tiny problem with integers 给定长度为N的数列A,然后输入M行操作指令. 第一类指令形如“C l r d”,表示把数列中第l~r个数都加d. 第二类指令形如“Q X” ...
- 【第三篇】C#调用lua文件
获取一个全局基本数据类型 使用LuaEnv.Global.Get<T>("name")就可以 var str = luaEnv.Global.Get<string ...
- CSS操作
CSS 与 JavaScript 是两个有着明确分工的领域,前者负责页面的视觉效果,后者负责与用户的行为互动.但是,它们毕竟同属网页开发的前端,因此不可避免有着交叉和互相配合. 1. 使用JavaSc ...
- SQL Server无法连接到服务器 标题: 连接到服务器 ------------------------------ 无法连接到 DESKTOP-J6I1UIC\SQLEXPRESS1。 ------------------------------ 其他信息: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。
解决方案: 打开 SQL server 配置管理器 选择 SQL server 服务,找到服务器,右键启动
- 代数式到c语言表达式和常用的c语言数学库函数_pow_sqrt_exp_fabs_abs
数学知识来源于生活,因此我们需要把相关的数学的知识在自己生活找到实例. #include "common.h" #include <stdio.h> #include ...
- LVS负载均衡工作模式和调度算法
原文链接:https://blog.csdn.net/weixin_40470303/article/details/80541639 一.LVS简介 LVS(Linux Virtual Server ...
- P5163 WD与地图 [整体二分,强连通分量,线段树合并]
首先不用说,倒着操作.整体二分来做强连通分量,然后线段树合并,这题就做完了. // powered by c++11 // by Isaunoya #include <bits/stdc++.h ...
- 技术之心 | 云信和TA们携手打响防疫战
1月27日,教育部发布<关于2020年春季学期延期开学的通知>,各地高等院校.中小学.幼儿园纷纷推迟开学.疫情当前,学生们的鼠年寒假变得无比漫长. 网易云信众多教育客户以行动践行教育的 ...