本篇探讨以下几个问题:你可提前猜测下面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)创建用户作用域范围的更多相关文章

  1. 理解 Oracle 多租户体系中(12c,18c,19c)Grant授权作用域范围

    本篇探讨以下几个问题:你可提前猜测下面6个场景语句中,哪几个授权可以成功执行? 1. 在CDB级别中对用户进行授权,不带 container 子句的效果: 2. 在CDB级别中对用户进行授权,带 co ...

  2. 理解 Oracle 多租户体系中(12c,18c,19c)Revoke 回收权限作用域范围

    本篇探讨以下几个问题:你可提前猜测下面6个场景语句中,哪几个回收可以成功执行? 1. 在CDB级别中对用户进行权限回收,不带 container 子句的效果: 2. 在CDB级别中对用户进行权限回收, ...

  3. 理解 Oracle 多租户体系中(12c,18c,19c)创建角色作用域范围

    本篇探讨以下几个问题:你可提前猜测下面6个场景语句中,哪几个可以成功创建角色? 1. 在CDB级别中创建公共角色,不带 container 子句的效果: 2. 在CDB级别中创建公共角色,带 cont ...

  4. 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 用户 ...

  5. OCP培训 Oracle 12c/18c/19c OCP认证实战培训【送OCP优惠名额】

    一.OCP培训 Oracle 12c/18c/19c OCP认证全套实战培训[送OCP优惠名额],本课程内容 课程目标: 为满足想参加Oracle OCP考证的学员,风哥设计的一套比较全面OCP实战培 ...

  6. linux环境中通过useradd命令,创建用户的时候指定用户的base-dir

    需求说明: 今天一个同事,问了一个这样的问题,在linux环境中,创建用户的时候,默认的是在/home目录下创建一个与用户名相同的家目录, 如何能够将这个/home更换成一个其他的,比如/opt/ap ...

  7. oracle 字符集安装错了,修改字符集 及创建用户 表空间 ,删除用户及所有的表

    1.首先以sysdba的身份登录上去 conn /as sysdba 2.关闭数据库shutdown immediate; 3.以mount打来数据库,startup mount 4.设置sessio ...

  8. windows下怎样测试oracle安装是否成功以及在oracle中创建用户并赋予用户权限;和[Err] ORA-65096: 公用用户名或角色名无效的解决方案

    测试oracle数据安装是否成功,可按顺序执行以下两个步骤: 测试步骤 1:请执行操作系统级的命令:tnsping orcl 上述命令假定全局数据库名是 orcl.以下是命令执行后的示例(请在cmd命 ...

  9. Linux的VMWare中Centos7用户和用户管理三个系统文件(/etc/passwd-shadow-group解读)和批量创建用户user及用户工作环境path

    Linux 用户和用户组管理 用户工作环境PATH Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用 ...

随机推荐

  1. 搭建Linux(Ubuntu)系统下的Differential Datalog运行环境

    DDlog is a bottom-up, incremental, in-memory, typed Datalog engine. It is well suited for writing pr ...

  2. FIB表与RIB表的区别与联系

    RIB (route information base) 和 FIB (forwarding information base),又称Ip路由表 和 CEF表,它们之间的关系可以用下面这张图片来高度概 ...

  3. 本地服务器热更新 插件 live-server

    本地服务器热更新 插件 live-server 超级好用 强烈种草一波 无需安装到项目中 使用方法如下: 1.先全局安装live-server: npm i http-server -g 2.在需要热 ...

  4. jQuery---on注册事件的2种方式

    on注册事件的2种方式 on注册事件的语法 on注册简单事件 // 这个是p自己注册的事件(简单事件) $("p").on("click", function ...

  5. day7 基础数据类型&集合&深浅拷贝

    基础数据类型汇总: #!/usr/bin/env python # -*- coding:utf-8 -*- ''' str int ''' # str s = ' a' print(s.isspac ...

  6. 智能家居为MCU带来巨大需求量

    新一代年轻消费族群对于生活品质的需求逐渐提高,不仅小米要发展智能家居,中兴通讯也在于近日在北京揭晓智"智能家居"将成为市场主流,而智能家居的崛起也必然引爆MCU的需求量迅速攀升,众 ...

  7. 如何安装selenium框架

    半年前因不满自己工作内容,便到处寻求资料,偶遇分享一套全套教程.开始学习python,后接触selenium有关内容. 前期因为配置环境花了些许时间,后来解决了,回想是如此简单 安装步骤 1.下载py ...

  8. Nginx配置HTTPS并将HTTP请求重定向到HTTPS

    个人博客 地址:https://www.wenhaofan.com/a/20190702214652 在阿里云获取免费的HTTPS证书 配置HTTPS之前首先需要拥有HTTPS证书,在阿里云可以获得域 ...

  9. Wannafly挑战赛13 zzf的好矩阵 题解 答案解释

    Wannafly挑战赛13 zzf的好矩阵 题解 文章目录 Wannafly挑战赛13 zzf的好矩阵 题解 分析 结论1 结论2 结论3 C数组对应带子说明 空白长度论述 后续黑色长度论述 能&qu ...

  10. ES6 class(基本语法+方法)

    静态属性与静态方法 1. 不会被类实例所拥有的属性与方法 只是类自身拥有2. 只能通过类调用 静态方法与普通方法重名,不会冲突static 关键字(静态方法) 静态属性类名.属性名 = 属性值; 1. ...