2

我想创建一个连接为 SYSTEM 的角色。但是因为我有很多具有很多角色的模式,并且它们都将以这种方式创建,所以我不希望将创建的角色授予 SYSTEM(否则最终将超过 148 个角色的限制)。

=> 是否可以禁用创建者的自动授权?

注意:目前我在 Oracle 9i 上工作,但很快就会升级到 11g

4

2 回答 2

2

我的回答分为两部分:

  1. Oracle 中的角色有点像你的钥匙圈上的钥匙:仅仅因为它们在钥匙圈上并不意味着你一直在使用它们。Oracle 有默认角色的概念:这些角色在创建会话时自动激活。如果用户愿意,可以稍后启用其他角色。

    148 个角色限制适用于活动角色,例如,请参阅 oracle 10g 的此文档链接:http: //docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6012.htm#sthref7227

    要禁用默认角色,请使用 ALTER USER ... DEFAULT ROLE ...,请参阅http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4003.htm#sthref5717

  2. 当连接为 SYSTEM 时,不要创建任何对象,甚至角色。相反,您应该使用普通用户来创建角色并向其添加适合该用户架构对象的对象。您需要将 CREATE ROLE 系统特权授予那些需要拥有对象并为其拥有角色的用户,但这都是 Oracle 安全模型的一部分。

于 2012-10-04T07:53:09.147 回答
1

单个用户一次可以启用的用户定义角色的最大数量为 148。

您几乎可以创建任意数量的角色 - 只是不要一次启用所有角色。

当您创建角色(用户角色除外)时,它会隐式授予您并添加为默认角色。如果您拥有超过 MAX_ENABLED_ROLES,您会在登录时收到错误消息。您可以通过将用户的默认角色更改为小于 MAX_ENABLED_ROLES 来避免此错误。因此,您应该在创建用户角色之前更改 SYS 和 SYSTEM 的 DEFAULT ROLE 设置。

http://docs.oracle.com/cd/B10500_01/server.920/a96521/privs.htm#15539

例如

ALTER USER SYSTEM DEFAULT ROLE DBA
于 2012-10-04T07:51:19.483 回答