理解 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 默认
首先,CDB创建公共角色,如果没有带前缀,将报错
SQL> create role crole1;
create role crole1
*
ERROR at line 1:
ORA-65096: invalid common user or role name
创建不带任何子句的公共角色
SQL> create role c##crole1; Role created. SQL> set linesize 200
SQL> col role for a20
SQL> select role,common,con_id from cdb_roles where role='C##CROLE1'; ROLE COMMON CON_ID
-------------------- ------ ----------
C##CROLE1 YES 1
C##CROLE1 YES 3
结果作用域范围是:当前CDB和所有PDB生效。
2. CDB带 container=all
SQL> create role c##crole2 container=all; Role created. SQL> select role,common,con_id from cdb_roles where role='C##CROLE2'; ROLE COMMON CON_ID
-------------------- ------ ----------
C##CROLE2 YES 1
C##CROLE2 YES 3
结果作用域范围是:当前CDB和所有PDB生效。和不带子句效果一致。
3. CDB带 container=current
SQL> create role c##crole3 container=current;
create role c##crole3 container=current
*
ERROR at line 1:
ORA-65094: invalid local user or role name
结果作用域范围是:报错,公共角色无法进行本地创建。
4. PDB不带 container 默认
首先,PDB级别在本地能否创建以c##前缀开头的公共角色?
SQL> alter session set container=orders; Session altered. SQL> create role c##crole4;
create role c##crole4
*
ERROR at line 1:
ORA-65094: invalid local user or role name
结果作用域范围是:报错,PDB级别是无法创建公共角色的。
SQL> create role prole1; Role created. SQL> select role,common,con_id from cdb_roles where role='PROLE1'; ROLE COMMON CON_ID
-------------------- ------ ----------
PROLE1 NO 3
结果作用域范围是:仅当前PDB级别生效。
5. PDB带 container=all
SQL> create role prole2 container=all;
create role prole2 container=all
*
ERROR at line 1:
ORA-65050: Common DDLs only allowed in root.
结果作用域范围是:报错,PDB本地数据库中是无法通过 container=all 创建角色的。
6. PDB带 container=current
SQL> create role prole2 container=current; Role created. SQL> select role,common,con_id from cdb_roles where role='PROLE2'; ROLE COMMON CON_ID
-------------------- ------ ----------
PROLE2 NO 3
结果作用域范围是:仅当前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实战培 ...
- 深入理解Oracle RAC 12c 笔记
深入理解Oracle RAC 12c 跳转至: 导航. 搜索 文件夹 1 概述 2 集群件管理和故障诊断 3 执行实践 4 新特性 5 存储和ASM 6 应用设计上的问题 7 管理和调优一个复杂的RA ...
- 理解oracle中连接和会话
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp44 理解oracle中连接和会话 1. 概念不同:概念不同: 连接是指物 ...
- 前端知识体系:JavaScript基础-原型和原型链-理解原型设计模式以及 JavaScript中的原型规则
理解原型设计模式以及 JavaScript中的原型规则(原文地址) 1.原型对象:我们创建的每一个函数(JavaScript中函数也是一个对象)都有一个原型属性 prototype,原型属性实质上是一 ...
- ORACLE--12C--多租户体系架构概念
一,概念 1,何为多租户? 官网链接: 飞机直达>> 多租户这个概念并不是12C的新特性,而是体系架构,多租户架构使得oracle 数据库成为了一个多租户的容器数据库,也就是contain ...
随机推荐
- 关于Redis缓存预热的思考
系统上线时,提前将相关的缓存数据直接加载到缓存系统.避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题. 这里我考虑2个问题: A.哪些数据需要预热? B.如何预热? 关于问题A,根据不同的业 ...
- 基于SSM开发在线家教预约系统源码
开发环境: Windows操作系统开发工具:Eclipse+Jdk+Tomcat8+mysql数据库 注意:次项目运行Tomcat8服务器里面 次项目比较大,需要自行研究 运行效果图 源码及原文链接: ...
- mysql必知必会--使用MySQL
连接 在具有可供使用的MySQL DBMS和客户机软件之后,有必要简要讨 论一下如何连接到数据库. MySQL与所有客户机 - 服务器DBMS一样,要求在能执行命令之前登 录到DBMS.登录名可以与网 ...
- Kafka消费者没有收到通知的分析
今天遇到两位三方人员跟我反馈,某微服务的异步接口功能不正常了,由于该异步接口采用Kafka异步消息的方案,对方说没有收到Kafka给消费者的通知,根据此问题,联系了相关人员进行了分析: (一)明确环境 ...
- expect: spawn id exp6 not open while executing "expect eof"
1.expect是基于tcl演变而来的,所以很多语法和tcl类似 基本的语法如下所示:1.1 首行加上/usr/bin/expect1.2 spawn: 后面加上需要执行的shell命令,比如说spa ...
- 浅谈python的第三方库——numpy(终)
本文作为numpy系列的总结篇,继续介绍numpy中常见的使用小贴士 1 手动转换矩阵规格 转换矩阵规格,就是在保持原矩阵的元素数量和内容不变的情况下,改变原矩阵的行列数目.比如,在得到一个5x4的矩 ...
- 使用高精度计算斐波那契数列 c++
使用高精度计算斐波那契数列 非高精度 Code(Non-high accuracy) 这是不用高精度的代码 #include<bits/stdc++.h> using namespace ...
- 【NLP】暑假课作业3 - 词性标注(简单词频概率统计)
作业任务: 使用98年人民日报语料库进行词性标注训练及测试. 作业输入: 98年人民日报语料库(1998-01-105-带音.txt),用80%的数据作为训练集,20%的数据作为验证集. 运行环境: ...
- seleniumChrom无头浏览器
---------------------- 谷歌无头浏览器 ----------------------------- import time from selenium import webdri ...
- HTML5表单验证(4个实用的表单美化案例)
multipart/form-data 在使用包含文件上传控件的表单时,必须使用autocomplete="on" 自动补全功能novalidate 不验证 <form en ...