Oracle ROLE如何启用个数限制

Oracle在启用用户的角色时,最多允许启用148个。

其实这个限制比较奇怪,因为148与2的幂相差较大,不知道Oracle出于什么原因确定的这个值:

SQL> CREATE USER U_ROLE IDENTIFIED BY U_PASSWORD;

用户已创建。

SQL> GRANT CREATE ROLE TO U_ROLE;

授权成功。

SQL> GRANT CREATE SESSION TO U_ROLE;

授权成功。

SQL> CONN U_ROLE/U_PASSWORD

已连接。

SQL> BEGIN

2  FOR I IN 1..148 LOOP

3  EXECUTE IMMEDIATE 'CREATE ROLE R_' || I;

4  END LOOP;

5  END;

6  /

PL/SQL过程已成功完成。

SQL> SELECT * FROM SESSION_ROLES;

未选定行

SQL> CONN U_ROLE/U_PASSWORD

已连接。

SQL> SELECT COUNT(*) FROM SESSION_ROLES;

COUNT(*)

----------

148

SQL> CREATE ROLE R_149;

角色已创建。

SQL>CONNU_ROLE/U_PASSWORD

ERROR:

ORA-28031: maximum of 148 enabled roles exceeded

警告:您不再连接到ORACLE。

本栏目更多精彩内容:http://www.bianceng.cn/database/Oracle/

由于角色的启用是在会话登陆时确定,因此创建完148个角色后,从SESSION_ROLES中查询不到记录。而创建了第149个角色,当再次登陆的时候,Oracle报错。

SQL> CONN / AS SYSDBA

已连接。

SQL> DROP ROLE R_149;

角色已删除。

SQL> CONN U_ROLE/U_PASSWORD

已连接。

SQL> CREATE ROLE R_149;

角色已创建。

SQL> SET ROLE ALL;

SET ROLE ALL

*

第1行出现错误:

ORA-28031:超出启用角色的最大数148

需要注意,授权角色总数限制包括直接授权的角色和授权给角色的角色的数量:

SQL> DROP ROLE R_149;

角色已删除。

SQL> DROP ROLE R_148;

角色已删除。

SQL> CONN / AS SYSDBA

已连接。

SQL> CREATE ROLE R_148;

角色已创建。

SQL> GRANT R_148 TO U_ROLE;

授权成功。

SQL> CONN U_ROLE/U_PASSWORD

已连接。

SQL> CONN / AS SYSDBA

已连接。

SQL> CREATE ROLE R_149;

角色已创建。

SQL> GRANT R_149 TO R_148;

授权成功。

SQL>CONNU_ROLE/U_PASSWORD

ERROR:

ORA-28031: maximum of 148 enabled roles exceeded

警告:您不再连接到ORACLE。

时间: 2024-07-30 12:48:01

Oracle ROLE如何启用个数限制的相关文章

有关Oracle role的总结

oracle的role算是对sys privilege 和object privilege的打包. 今天深入的测试了下,还算有不少的东西.role不是schema对象 像table等在一个schema里面不能有同名的schema object,但是可以有同名的table和role,如下. SQL> conn test1/test1 Connected. SQL> create role testrole; Role created. SQL> create table testrole

Oracle并行简介

并行DML操作需注意2点: 1).显示在会话里执行:alter session enable parallel dml; 2).对于Delete.Update .Merge的操作,只有被操作的对象是分区表时,Oracle才会启用并行操作; 3).对于insert只有insert into ...select * from 此形式才有用; 各种并行操作举例如下: --并行delete delete /*+ parallel(t,2) */ * from t; --并行update update /

oracle数据库用户角色简单测试

测试数据库角色role,使用set role命令启用角色,设置数据库用户的缺省角色 创建角r1和r2,其中r2通过口令验证,我设置的口令是oracle SQL> conn system/oracle Connected. SQL> create role r1; Role created. SQL> create role r2 identified by oracle; Role created. 给这两个角色授权,其中r2的权限包含r1的权限,也就是说r2的权限高一些 SQL>

Oracle 角色、配置文件

--================================ --Oracle 角色.配置文件 --================================   一.角色     1.角色            权限的集合,可以分配给一个用户或其他角色,但角色不能授予自己,也不能循环授予        角色的优点            可以先创建角色,向该角色赋予一系列权限,然后再将该角色授予多个用户或角色            增加或删除角色中的某一权限,被授予该角色的所有用户

MySQL · 社区动态 · MariaDB Role 体系

背景 从 MairaDB 10.0.5 开始,MariaDB 开始提供 Role(角色)的功能,补全了大家一直吐槽的 MySQL 不能像 Oracle 一样支持角色定义的功能. 一个角色就是把一堆的权限捆绑在一起授权,这个功能对于有很多用户拥有相同权限的情况可以显著提高管理效率.在有角色之前,这种情况只能为每个用户都做一大堆的授权操作,或者是给很多个需要相同权限的用户提供同一个账号去使用,这又会导致你要分析用户行为的时候不知道哪个操作是哪个具体用户发起的. 有了角色,这样的管理就太容易了.例如,

Oracle Database 12c - Global Data Services

手记:Oracle 12c新加入的GDS特性是针对复制数据库(使用复制技术,例如ADG,Ogg等)的完整自动化工作负载管理解决方案.今天我们一起来学习GDS的相关知识. 注:文档内容来自Global-Data-Service白皮书翻译. 为满足企业各种业务需求,如高可用性.灾难恢复.内容本地化和缓存.可扩展性等,许多组织在本地或远程的数据中心维护一个或多个生产数据库的复制.Oracle数据库一般通过Oracle ADG和Oracle GoldenGate技术策略用于完成数据库的复制. 1 业务需

oracle11g-oracle 00306 调用‘||’时个数或参数错误

问题描述 oracle 00306 调用'||'时个数或参数错误 create or replace procedure lable_to_lable_relation is Cursor phases is select distinct lt.phase from lable_temple lt ; phaseName varchar2(100); sqlStr varchar2(2000); begin --创建标签关系表 sqlStr:='create table SYSTEM.labl

Oracle Sun ZFS存储设备和Pillar Axiom存储系统支持混合列式压缩

甲骨文http://www.aliyun.com/zixun/aggregation/17539.html">公司宣布,Oracle Sun ZFS存储设备和Pillar Axiom存储系统现已支持混合列式压缩(Hybrid Columnar Compression)功能,最早支持该功能的是Oracle Exadata. 随着ZFS存储设备和Pillar Axiom存储系统对混合列式压缩功能的支持,Oracle NAS和SAN系统的客户现在可以受益于混合列式压缩功能带来的高存储效率了,他们

一步一步搭建oracle 11gR2 rac+dg之环境准备(二)

  一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg 之环境准备 (二) 本篇目录结构:   Linux 环境准备 安装linux的环境,我就不介绍了,这一部分如果不会的童鞋就去百度吧,一百度一大堆,如果还是不会的话就直接下载我已经安装好的系统吧,下载下来直接可用(http://yunpan.cn/cgkEsf8wpHC2G (提取码:90f5)),复制3份,直接命名为rac1.rac2和dg即可,如图:     前期环境准备