Oracle 创建一个角色而不授予它

Oracle 创建一个角色而不授予它,oracle,role,Oracle,Role,我想创建一个作为系统连接的角色。但由于我有很多模式,其中包含很多角色,并且所有模式都将以这种方式创建,所以我不希望将创建的角色授予系统(否则最终将超过148个角色的限制) =>是否可以禁用创建者的自动授权 注意:目前我正在开发Oracle 9i,但它很快就会升级到11g 可以为某个应用程序启用的最大用户定义角色数 单用户一次为148 您几乎可以创建任意多个角色—只是不要一次启用所有角色 当您创建角色(用户角色除外)时,该角色将授予您 隐式地添加为默认角色。您在登录时收到一个错误 如果您有超过MA

我想创建一个作为系统连接的角色。但由于我有很多模式,其中包含很多角色,并且所有模式都将以这种方式创建,所以我不希望将创建的角色授予系统(否则最终将超过148个角色的限制)

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

注意:目前我正在开发Oracle 9i,但它很快就会升级到11g

可以为某个应用程序启用的最大用户定义角色数 单用户一次为148

您几乎可以创建任意多个角色—只是不要一次启用所有角色

当您创建角色(用户角色除外)时,该角色将授予您 隐式地添加为默认角色。您在登录时收到一个错误 如果您有超过MAX_启用的_角色。您可以通过以下方法避免此错误: 将用户的默认角色更改为小于最大启用的角色。 因此,您应该更改SYS和SYSTEM的默认角色设置 在创建用户角色之前

e、 g


我的答案有两个部分:

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

    148角色限制适用于活动角色,例如,请参见此oracle 10g文档链接:

    要禁用默认角色,请使用ALTER USER。。。默认角色…,请参阅

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


  • 这一点我再强调也不过分:不要创建任何系统或系统(甚至是Oracle提供的任何预定义所有者)。
    ALTER USER SYSTEM DEFAULT ROLE DBA