暂无图片
返回数说广场
小草
暂无图片
2025-09-28 半个DBA
解析 公共用户(Common User) 是在CDB级别(CDB$ROOT)创建的,其身份在整个CDB(包括所有PDB)中都是已知的。 一个核心规则是:公共用户的用户名在整个CDB范围内必须是唯一的。您不能在CDB中创建两个同名(例如 C##DBA_USER)的公共用户。 这个用户名的唯一性确保了当公共用户连接到不同的PDB时,其身份是明确且唯一的。系统可以准确地识别出这是同一个用户正在访问不同的PDB,而不是不同PDB中的不同用户。 因此,描述“公共用户的名称在所有PDB中必须唯一”是准确的,它强调的是整个容器数据库(CDB)范围内的全局唯一性。 在PDB中创建的本地用户(Local User),其名称可以以C##或c##开头。 错误。以 C## 或 c## 开头是公共用户的命名约定(由 COMMON_USER_PREFIX 参数定义)。Oracle强制规定,本地用户(Local User)的名称绝对不能以这个前缀开头。这是为了清晰地区分用户是公共的还是本地的。 在CDB$ROOT中创建的公共用户,可以直接连接到任何一个PDB而无需在该PDB中存在同名的用户。 错误(或具有强烈误导性)。这是最容易产生误解的一点。 公共用户创建后,其元数据和信息确实会传播到CDB中的每一个PDB。也就是说,从“存在性”上讲,这个用户在每个PDB中都“存在”。 但是,公共用户要能够成功连接到一个特定的PDB,必须在该PDB中被授予相应的 CREATE SESSION 权限。 “无需在该PDB中存在同名的用户”,这个说法是模糊的。虽然不需要“创建”同名用户(因为它已存在),但绝对需要“配置”这个用户(即授予权限)。没有权限,连接尝试会失败。因此,这个选项的描述不严谨,被视为错误。 一个公共用户必须在CDB和所有PDB中拥有完全相同的权限和角色。 错误。公共用户在CDB和每个PDB中的权限和角色是完全独立的。在CDB$ROOT中授予公共用户的权限仅在其连接到根容器时有效。当该用户连接到某个PDB(如 PDB1)时,它只拥有在该PDB内被显式授予的权限和角色。权限和角色不会在不同容器之间自动继承或同步。
0
暂无图片 0
255
分享

评论

热门数说