我想创建一个以SYSTEM身份连接的角色。但是因为我有很多具有很多角色的模式,并且所有这些模式都是以这种方式创建的,所以我不希望将创建的角色授予SYSTEM(否则它最终将超过148个角色限制)。
=>是否可以禁用创建者的自动授权?
注意:目前我正在使用Oracle 9i,但很快就会升级到11g
答案 0 :(得分:2)
我的回答分为两部分:
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
作为SYSTEM连接时,不要创建任何对象,甚至角色。相反,您应该使用普通用户创建角色并向其添加适合该用户的架构对象的对象。您需要将CREATE ROLE系统特权授予那些需要拥有对象并为其拥有角色的用户,但这些都是Oracle安全模型的一部分。
答案 1 :(得分: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
e.g。
ALTER USER SYSTEM DEFAULT ROLE DBA