Oracle 的概念指南是解决此类问题的一个非常好的起点。
例如,请参阅之后的用户帐户、配置文件和角色。
简而言之,配置文件是给定用户的限制列表。有些影响密码(生存时间、锁定时间等),有些影响用户可以使用的资源(最大会话数、最大 io 等)。不幸的是,只有管理员才能看到个人资料。
现在用户:由于某些原因,用户和模式在 Oracle 中是同一件事(至少这是我的解释)。因此,如果您想创建一个表、一个函数或任何其他东西,它就由用户拥有。
您可以将一个用户的表的访问权限授予另一用户。在较大的系统中,这很快就会变得非常混乱,因此人们通常授予对角色的访问权限,然后将该角色授予相关用户。将角色视为一袋特权。
注意:从技术上讲,用户和角色位于同一个系统表中SYS.USER$,用户拥有type#=1角色type#=0。因此,您可以将角色视为一种被阉割的用户,不允许他们拥有任何表或其他对象,但他们的生活目的是拥有特权并将其传递给真正的用户。
编辑:
数据字典视图中有可用配置文件的列表DBA_PROFILES。数据库中的每个用户都被分配给其中一个配置文件。我使用来自oracle vagrant的示例数据库,所有用户都有配置文件DEFAULT:
SELECT username, profile FROM DBA_USERS;
SYS DEFAULT
SYSTEM DEFAULT
...
Run Code Online (Sandbox Code Playgroud)
可以向用户授予零个或多个角色。更糟糕的是,一个角色可以被授予另一个角色(尽管有些人不鼓励嵌套角色)。因此每个用户都可以拥有一整套角色树。通常情况下,它只是一个不到十几个角色的列表。
以下是所有可用角色的列表:
SELECT * FROM DBA_ROLES;
CONNECT
RESOURCE
DBA
...
Run Code Online (Sandbox Code Playgroud)
以下是哪个用户被授予什么角色的列表:
SELECT * FROM DBA_ROLE_PRIVS;
SYS DBA
SYS AUDIT_ADMIN
SYS CONNECT
SYSTEM DBA
...
Run Code Online (Sandbox Code Playgroud)
所以个人资料和角色是完全不同的东西。配置文件管理用户的密码寿命及其与数据库的连接。角色规定用户拥有哪些权限(访问表或系统权限)。