Oracle 12C中,账号分为两种,一种是公用账号,一种是本地账号(亦可理解为私有账号)。共有账号是指在CDB下创建,并在全部PDB中生效的账号,另一种是在PDB中创建的账号。

针对这两种账号的测试如下:

1.1 在PDB中创建测试账号

SQL> alter session set container=pdb01;

SQL> select username from dba_users where username like 'GUI%';

SQL> CREATE USER TEST IDENTIFIED BY test;

SQL> grant dba to test;

SQL> show con_name

CON_NAME

------------------------------

PDB01

SQL> conn /as sysdba

Connected.

SQL> create user test identified by test;

create user test identified by test

*

ERROR at line 1:

ORA-65096: invalid common user or role name

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

结论:

如果在PDB中已经存在一个用户或者角色,则在CDB中不能创建相同的账号或者角色名。

1.2 在CDB中创建测试账号

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

SQL> create user C##GUIJIAN IDENTIFIED BY guijian;   ------注意CDB中创建用户一定要带上c##

SQL> create user c#gui identified by gui;

create user c#gui identified by gui

*

ERROR at line 1:

ORA-65096: invalid common user or role name

SQL> select username from dba_users where username like '%GUI%';

USERNAME

--------------------------------------------------------------------------------

C##GUIJIAN

SQL> ALTER SESSION SET CONTAINER=PDB01;

SQL> select username from dba_users where username like '%GUI%';

USERNAME

--------------------------------------------------------------------------------

C##GUIJIAN

SQL> create user guijian identified by guijian;

同样在CDB中创建账号后不能在PDB中出现同名的账号,因CDB中的账号对所有的PDB都是有效的。

SQL> create user c##guijian identified by guijian;

create user c##guijian identified by guijian

*

ERROR at line 1:

ORA-65094: invalid local user or role name

SQL> alter session set container=pdba;

Session altered.

SQL> show user

USER is "SYS"

SQL> alter user sys identified by sys;

alter user sys identified by sys

*

ERROR at line 1:

ORA-65066: The specified changes must apply to all containers

SQL> show con_name

CON_NAME

------------------------------

PDBA

SQL> conn /as sysdba

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

SQL> alter user sys identified by sys;

1.3 CDB下创建账号的权限问题

SQL> conn / as sysdba

SQL> grant connect,create session to c##cdb;

SQL> conn c##cdb/cdb@pdba

ERROR:

ORA-01045: user C##CDB lacks CREATE SESSION privilege; logon denied

Warning: You are no longer connected to ORACLE.

SQL> a

SP2-0004: Nothing to append.

SQL> conn / as sysdba

Connected.

SQL> alter session set container=pdba;

SQL> grant resource,connect to c##cdb;

SQL> conn  /as sysdba

SQL> conn c##cdb/cdb@pdba

SQL> conn / as sysdba

SQL> create user guijian identified by guijian container=current;

create user guijian identified by guijian container=current

*

ERROR at line 1:

ORA-65049: creation of local user or role is not allowed in CDB$ROOT

SQL> create user c##guijian identified by guijian container=current;

create user c##guijian identified by guijian container=current

*

ERROR at line 1:

ORA-65094: invalid local user or role name

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

SQL> create user c##guijian identified by guijian container=all;

SQL> create user c##guijian01 identified by guijian;

SQL> conn  /as sysdba

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

SQL> grant dba to c##guijian01;

SQL> conn c##guijian01/guijian@pdba

ERROR:

ORA-01045: user C##GUIJIAN01 lacks CREATE SESSION privilege; logon denied

Warning: You are no longer connected to ORACLE.

SQL> conn  /as sysdba

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

SQL> grant dba to c##guijian01 container=all;

SQL> conn c##guijian01/guijian@pdba

1.4 对象管理测试

对象管理测试中,我们简单测试在共有账号的数据对象的CDB和PDB下的不同。

1、在CDB下创建对象,在PDB下查看:

SQL> conn c##cdb/cdb

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

SQL> create table cdb as select * from dba_users;

SQL> commit;

可以看到,在CDB下的共有账号创建的对象在PDB下是看不到的。

2、在PDB下的共有账号创建对象,在CDB下查看:

SQL> show con_name

CON_NAME

------------------------------

PDBA

SQL> show user

USER is "C##CDB"

SQL> select object_name from user_objects;

SQL> create table cdb as select * from dba_users;

可以看出,针对同一个共有账号在PDB下创建的账号在CDB是看不到的,此外我们还注意到一个细节,针对同一个共有账号,在PDB和CDB下创建的共有账号因在CDB和PDB下被赋予了不同的含义,故在CDB下创建的对象和在PDB下创建的对象是可以同名的,反之也成立。

结论:

1、 如果在PDB中已经存在一个用户或者角色,则在CDB中不能创建相同的账号或者角色名。

2、 同样在CDB中创建账号后不能在PDB中出现同名的账号,因CDB中的账号对所有的PDB都是有效的。

3、 在CDB中创建的账号将会在全部的PDB中出现,但是在CDB中的授权,如非特别指定的话,并不能传递到PDB中。

4、 针对同一个共有账号在PDB下创建的账号在CDB是看不到的。针对同一个共有账号,在PDB和CDB下创建的共有账号因在CDB和PDB下被赋予了不同的含义,故在       CDB下创建的对象和在PDB下创建的对象是可以同名的,反之也成立。

转载于:https://blog.51cto.com/fengfeng688/1920499

oracle12C 创建用户学习相关推荐

  1. oracle12c用户名c##_Oracle数据库之oracle12c创建用户提示ORA-65096:公用用户名或角色无效...

    本文主要向大家介绍了Oracle数据库之oracle12c创建用户提示ORA-65096:公用用户名或角色无效,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 1.背景 以前一直 ...

  2. 分享知识-快乐自己:oracle12c创建用户提示ORA-65096:公用用户名或角色无效

    今天在oracle12c上创建用户,报错了.如下图: 我很郁闷, 就打开了oracle官方网站找了下, 发现创建用户是有限制的. 2.解决方案 创建用户的时候用户名以c##或者C##开头即可. 错误写 ...

  3. Oracle12c创建用户不加C##

    Oracle12c数据库的创建用户的方式有所改变,因为Oracle 12C引入了CDB与PDB的新特性,具体特性就不多说了,感兴趣可查看官方文档.因此,我们平时所用的创建用户的命令也有所变化,必须得加 ...

  4. oracle12c创建pdb用户6,ORACLE12C PDB创建默认表空间和用户语句

    --创建默认表空间: create tablespace tablesapce_name datafile size 500M   autoextend on next 100M; --创建用户空间: ...

  5. oracle 创建角色 权限设置,[学习笔记] Oracle创建用户、分配权限、设置角色,

    [学习笔记] Oracle创建用户.分配权限.设置角色, 创建用户 create user student --用户名 identified by "123456" --密码 de ...

  6. 小白学习MySQL - 不同版本创建用户的些许区别

    MySQL创建用户有很多种方法,例如常规create user,再通过grant,授予权限,还可直接grant连带创建用户和授权一起做了.最近创建过程中,发现不同版本操作有些区别. MySQL 5.7 ...

  7. oracle12c创建表空间、创建用户、创建权限

    目录 1.基本概念 1.1.关于账号的概念 1.2.关于pdb和cdb的概念 3.创建用户 4.给用户创建权限 5.综合练习(很重要.正在写...) 6.参考资料 1.基本概念 1.1.关于账号的概念 ...

  8. oracle怎么创建登录用户,Oracle学习第一课(登录oracle和创建用户)

    博客10:housen1987 housen1987.iteye.com/blog/1345496 [学习是螺旋上升的过程,由易到难,由少到多,由点到面,每一个步骤,每一个脚印,每一个见闻,每一个错误 ...

  9. Oracle 11gR2学习之三(创建用户及表空间、修改字符集和Oracle开机启动)

    一.创建用户及表空间 1.连接数据库 [root@localhost ~]# su - oracle [oracle@localhost ~]$ sqlplus /nolog   #进入sqlplus ...

最新文章

  1. mysql商品管理系统总结_Mysql管理总结
  2. 【Android RTMP】RTMPDump 推流过程 ( 独立线程推流 | 创建推流器 | 初始化操作 | 设置推流地址 | 启用写出 | 连接 RTMP 服务器 | 发送 RTMP 数据包 )
  3. [Tips on Ember 2] 如何尝试 angle-bracket component
  4. 有了人工智能还不够?腾讯的工具产品想试试社交
  5. JQuery EasyUI 动态隐藏
  6. 讲解Linux数据库安装
  7. flutter 刷脸_GitHub - hqwlkj/wechat_face_payment: 微信刷脸支付、刷脸认证、扫码支持等 Flutter 插件....
  8. Java架构-高并发的解决实战总结方案
  9. 2017-10-08 前端日报
  10. 如何将zlib,gzip和zip相关联?它们有什么共同之处,它们有何不同?
  11. python画出roc曲线 auc计算逻辑_从scikitlearn(sklearn)的多类数据计算AUC和ROC曲线?...
  12. Atitit  图像处理Depixelizing Pixel Art像素风格画的矢量化
  13. spring cloud 搭建问题记录
  14. 武大计算机考研 932教材,2018武汉大学考研官方指定参考书目
  15. A780完全攻略总汇[转自cffuzs]
  16. 云原生GIS技术全解读
  17. swift实现单例的四种方式
  18. 树莓派4b常用资料汇总
  19. 百度地图API——多点路径连线问题
  20. 关于JackJson接收前端UTC格式化报错SON parse error: Cannot deserialize value of type `java.util.Date` from String

热门文章

  1. Django中urls参数传递
  2. git向远程推送代码提示需要token
  3. oracle 错误码1438,一次ora-01438错误的处理
  4. 个人生活助手app_“3·15可信赖应用白名单”发布 360旗下多款APP获评甲级认证
  5. rust怎么建柱子_小报:捷达VS5安全带卡扣向里?敲B柱?怎么掰回来? 第191220期...
  6. oracle修改seq为order,Oracle 创建和修改sequence
  7. 自建git服务器 ssh,搭建基于SSH的Git服务器
  8. 利用可分离卷积UNet进行木薯叶病分类
  9. 深度迁移学习在花生叶部病害图像识别中的应用
  10. python绘制子图去掉x轴坐标值_python – 关闭图形的所有子图的轴