Loading

Oracle 19c ORA-65096 公用用户名或角色名无效

先来看看这个问题出现的前提

Oracle 12c 开始有了CDB和PDB

CDB与PDB是Oracle 12C引入的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。

CDB全称为ContainerDatabase,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。

在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。

而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系。

 

12c中,oracle 将CDB看成一个容器,用来存放数据库。

  • 在CDB中可以有多个PDB,其中存在一个root根容器(PDB$ROOT)、一个种子容器(PDB$SEED)和多个PDBS。
  • 所有的PDB共用一个硬件系统资源、sga和pga、redo、临时段、控制文件、参数文件、还原段(还可对每个PDB单独指定)。

PDB$ROOT:根容器用来做所有容器的跟,用来对每个PDB进行统一管理

  • sqlplus / as  sysdba连接进来默认是连接的根容器,需要切换到其他的PDB容器才可以对单独的PDB操作。
  • 其中有 system数据文件、sysaux数据文件、(undo数据文件、temp数据文件、redo、控制文件)。
  • 一般不存放生产数据文件

PDB$SEED:种子容器作为插入PDB的模板而存在

  • 每个CDB都有一个种子容器,且不可对其中对象进行修改。
  • 其中有 system数据文件、sysaux数据文件、其他数据文件。

PDB:新插入容器,该容器用来存放数据库

  • 其中有 system数据文件、sysaux数据文件、其他数据文件。
  • 12c中可以插入多个容器进行统一管理,来减少DBA的工作量。
  • 其中的数据库可以插入或拔出。

用户:12c中PDB$ROOT中的普通目录可以通过权限分配来访问一个或多个指定的PDB容器,最大权限用户是sysdba

  • 其中PDB也可单独创建普通用户来管理该容器的数据库。
  • PDB资源管理:12c中将多个数据库运行在一个硬件资源上,CDB性能上得到优化。
  • 在CDB中为每个PDB确定使用CPU最低份额,CDB会按照一个PDB份额/分配的总份额数*100%,来保证PDB最低份额数。

管理容器

使用sqlplus登陆(用plsql登陆无法使用show指令)

查询容器是否CDB

select name,cdb,open_mode,con_id from v$database;

查看当前容器

show con_name;

查看已经创建的pdb

show pdbs;

在使用plsql连接Oracle 19c并创建新用户的时候报错, ORA-65096 公用用户名或角色名无效

官方地址:https://docs.oracle.com/database/121/DBSEG/users.htm#GUID-4BF8A362-AD9B-4780-944E-CFB9B7D84B50

文档里写的很清楚,如果要创建公共用户,需要加前缀c##

posted @ 2021-04-08 14:59  BigBender  阅读(4192)  评论(0编辑  收藏  举报