GilesDMiddleton Asked: 2015-11-26 10:10:54 +0800 CST2015-11-26 10:10:54 +0800 CST 2015-11-26 10:10:54 +0800 CST 无法登录 ORA-28031: 已启用最多 148 个角色 772 我无法登录 - 并收到上面的错误代码。我该如何解决? oracle 2 个回答 Voted are 2015-11-26T10:40:53+08:002015-11-26T10:40:53+08:00 要让用户连接,您需要撤销用户的一些角色 请参阅此处的讨论:AskTom https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1565923300346644029 MAX_ENABLED_ROLES关于用于将角色的最大数量限制为 150 个角色的参数的讨论。该参数被标记为,deprecated但正如讨论所说,它仍然有一些限制值 不推荐使用它,因为它们当前正在最大化它(就像不推荐使用 maxtrans - 但仍然“存在”,无论您将其设置为什么,它都是 255) MAX_ENABLED_ROLES Range of values 0 to 148 已弃用 MAX_ENABLED_ROLES 指定用户可以启用的最大数据库角色数,包括包含在其他角色中的角色。用户可以启用的实际角色数量是 2 加上 MAX_ENABLED_ROLES 的值,因为每个用户都有两个额外的角色,PUBLIC 和用户自己的角色。 Best Answer GilesDMiddleton 2015-11-26T10:10:54+08:002015-11-26T10:10:54+08:00 首先,登录为 SYSTEM@databasename AS SYSDBA 然后 SELECT * FROM DBA_ROLES; 然后对于您不想要的每个角色... DROP ROLE <rolename>; 放弃角色。 如果您对违规角色有一些模式,您可以使用以下匿名循环来清理它们。想象一下,您有 50 个角色,其中包含 GILES 一词,它们是由一些错误的 SQL 例程生成的: BEGIN FOR c IN ( SELECT ROLE FROM DBA_ROLES WHERE ROLE LIKE '%GILES%' ) LOOP EXECUTE IMMEDIATE 'DROP ROLE ' || c.ROLE; END LOOP; END; / 不要问我如何重新构建你的角色,我不是专家。我只是遇到了同样的问题,一些自动化测试正在创建角色但没有删除它们。 我相信您无法更改限制,因此有关限制的讨论毫无意义。 正如 Justin_Cave 所提到的,您还可以撤销用户的角色以停用它们或将角色设置为“非默认”,这有效地减少了活动角色的数量,并允许您保留该角色以供将来使用。
要让用户连接,您需要撤销用户的一些角色
请参阅此处的讨论:AskTom
https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1565923300346644029
MAX_ENABLED_ROLES
关于用于将角色的最大数量限制为 150 个角色的参数的讨论。该参数被标记为,deprecated
但正如讨论所说,它仍然有一些限制值首先,登录为
然后
然后对于您不想要的每个角色...
放弃角色。
如果您对违规角色有一些模式,您可以使用以下匿名循环来清理它们。想象一下,您有 50 个角色,其中包含 GILES 一词,它们是由一些错误的 SQL 例程生成的:
不要问我如何重新构建你的角色,我不是专家。我只是遇到了同样的问题,一些自动化测试正在创建角色但没有删除它们。
我相信您无法更改限制,因此有关限制的讨论毫无意义。
正如 Justin_Cave 所提到的,您还可以撤销用户的角色以停用它们或将角色设置为“非默认”,这有效地减少了活动角色的数量,并允许您保留该角色以供将来使用。