如何设置PDB容器数据库中限制本地Common与Local用户权限的方法?
- 内容介绍
- 相关推荐
本文共计1067个文字,预计阅读时间需要5分钟。
相关专题
Common 用户在 PDB 中为什么不能被删除或禁用
common 用户(如 c##admin)是在 cdb 根容器中创建、以 c## 或其他指定前缀开头、且带有 container=all 的用户。它们自动存在于所有 pdb 中,但**无法在 pdb 级别单独删除、锁定或修改密码**——任何这类操作都会报错 ora-65048: error encountered when processing the current ddl statement in pluggable database。
真正能控制其行为的只有 CDB$ROOT 中的 DROP USER 或 ALTER USER ... ACCOUNT LOCK,而且必须加 CONTAINER=ALL 才生效。
- 在 PDB 中执行
ALTER USER c##foo ACCOUNT LOCK→ 报ORA-65048 - 在 CDB$ROOT 中执行
ALTER USER c##foo ACCOUNT LOCK CONTAINER=ALL→ 成功,所有 PDB 中该用户均被锁 - 想让某个 PDB “看不见” Common 用户?做不到。它始终存在,只是权限受限
Local 用户在 PDB 中如何创建与权限隔离
Local 用户只存在于当前 PDB,名字不能带 C## 前缀,在 CDB$ROOT 中查不到,也完全不受 CDB 级策略影响。这是实现“PDB 级账号隔离”的实际手段。
本文共计1067个文字,预计阅读时间需要5分钟。
相关专题
Common 用户在 PDB 中为什么不能被删除或禁用
common 用户(如 c##admin)是在 cdb 根容器中创建、以 c## 或其他指定前缀开头、且带有 container=all 的用户。它们自动存在于所有 pdb 中,但**无法在 pdb 级别单独删除、锁定或修改密码**——任何这类操作都会报错 ora-65048: error encountered when processing the current ddl statement in pluggable database。
真正能控制其行为的只有 CDB$ROOT 中的 DROP USER 或 ALTER USER ... ACCOUNT LOCK,而且必须加 CONTAINER=ALL 才生效。
- 在 PDB 中执行
ALTER USER c##foo ACCOUNT LOCK→ 报ORA-65048 - 在 CDB$ROOT 中执行
ALTER USER c##foo ACCOUNT LOCK CONTAINER=ALL→ 成功,所有 PDB 中该用户均被锁 - 想让某个 PDB “看不见” Common 用户?做不到。它始终存在,只是权限受限
Local 用户在 PDB 中如何创建与权限隔离
Local 用户只存在于当前 PDB,名字不能带 C## 前缀,在 CDB$ROOT 中查不到,也完全不受 CDB 级策略影响。这是实现“PDB 级账号隔离”的实际手段。

