oracle12 创建本地用户,Oracle 12c多租户新特性:Common用户和Local用户的管理

Oracle 12c引入了Common用户和Local用户的概念,公用用户可在CDB和PDB中操作,以c##开头创建;本地用户则局限于特定PDB。公用权限跨Container有效,本地权限仅在特定PDB生效。公用角色包含全局和本地权限,本地角色仅包含本地权限。创建用户时通过CONTAINER选项指定用户类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle 12c多租户新特性:Common用户和Local用户的管理

6ee5639a40442445944d63b514b2dd02.png

编辑手记:这一节我们将介绍多租户架构中用户及权限的变化,全局用户和本地用户,管理方式和内部实现,这篇文章来自一书的摘录。云和恩墨 的很多客户已经采用多租户特性进行生产部署,这一技术早已经走入实践。

无论在CDB和Non-CDB数据库中,用户都拥有一个Schema,拥有一系列的Schema对象,在CDB中由于PDB的引入,用户范畴有所不同。

在CDB模式下,公用用户(Common User)和本地用户(Local User)两个概念被引入进来,公用用户可以在CDB和PDB中同时存在,能够连接ROOT和PDB进行操作;而本地用户则只在特定的PDB中存在,也只能在特定的PDB中执行操作;在PDB中不能创建公用用户,而在CDB中(CDB$ROOT中)同样不能创建本地用户。

在CDB中创建的公用用户要求以c##或C## 开头,以下测试以常规方式命名的用户将会创建失败,符合规则的用户可以被创建:

SQL> select banner from v$version;

BANNER

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

Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production

SQL> create user eygle identified by eygle;

create user eygle identified by eygle

*

第 1 行出现错误:

ORA-65096: 公用用户名或角色名无效

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

用户已创建。

当创建公用用户时,Oracle会向每个PDB中同时创建该用户,如果PDB未打开,则创建工作会以任务的方式延后。

以下查询显示数据库中只在容器1中存在新创建的用户:

SQL> select username,common,con_id from cdb_users where username like '%EYGLE%';

USERNAME COM CON_ID

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

C##EYGLE YES 1

此时打开PDB,则数据库会自动完成之前挂起的内部创建工作:

SQL> alter pluggable database enmo open;

插接式数据库已变更。

SQL> select username,common,con_id from cdb_users where username like '%EYGLE%';

USERNAME COM CON_ID

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

C##EYGLE YES 1

C##EYGLE YES 3

SQL> drop user c##eygle;

用户已删除。

下图描述了公用用户和本地用户的区别:

cdbpdb.png

在拥有了CREATE SESSION权限后,公用用户能够登陆包括Root在内的任何Container。公用用户一般在每个PDB中都存在对应的用户信息,在PDB中不能存在与公用用户重名的用户,如初始的SYS和SYSTEM用户都属于公用用户。也只有公用用户能够授权或被授权相应的公用角色和权限。

公用权限是指对所有Container都有效的系统或者对象权限,例如一个公用用户被授予了公用权限 CREATE ANY TABLE WITH ADMIN OPTION 可以将这个权限转授给其他公用用户.公用用户之外的权限被称为本地权限(Local Privilege).

公用角色是指在所有Container中都可见的角色,这些角色可能包含全局和本地权限。本地角色只能包含本地权限。授予公用角色的公用权限,对于具有该角色的用户在任何可以连接的Container中都将具有该权限。

以下是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值