Oracle角色

 我在前面的篇幅中说明权限和用户。慢慢的在使用中你会发现一个问题:如果有一组人,他们的所需的权限是一样的,当对他们的权限进行管理的时候会很不方便。因为你要对这组中的每个用户的权限都进行管理。

  有一个很好的解决办法就是:角色。角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限。那么上述问题就很好处理了,只要第一次将角色赋给这一组用户,接下来就只要针对角色进行管理就可以了。

  以上是角色的一个典型用途。其实,只要明白:角色就是一组权限的集合。下面分两个部门来对oracle角色进行说明。

 

二、系统预定义角色

  预定义角色是在数据库安装后,系统自动创建的一些常用的角色。下介简单的介绍一下这些预定角色。角色所包含的权限可以用以下语句查询:

sql>select * from role_sys_privs where role='角色名';

 

1CONNECT, RESOURCE, DBA

这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色。

 

2DELETE_CATALOG_ROLE EXECUTE_CATALOG_ROLE SELECT_CATALOG_ROLE

这些角色主要用于访问数据字典视图和包。

 

3EXP_FULL_DATABASE IMP_FULL_DATABASE

这两个角色用于数据导入导出工具的使用。

 

4AQ_USER_ROLE AQ_ADMINISTRATOR_ROLE

AQ:Advanced Query。这两个角色用于oracle高级查询功能。

 

5SNMPAGENT

用于oracle enterprise managerIntelligent Agent

 

6RECOVERY_CATALOG_OWNER

用于创建拥有恢复库的用户。关于恢复库的信息,参考oracle文档《Oracle9i User-Managed Backup and Recovery Guide

 

7HS_ADMIN_ROLE

A DBA using Oracle's heterogeneous services feature needs this role to access appropriate tables in the data dictionary.

 

二、管理角色

1.建一个角色

sql>create role role1;

2.授权给角色

sql>grant create any table,create procedure to role1;

3.授予角色给用户

sql>grant role1 to user1;

4.查看角色所包含的权限

sql>select * from role_sys_privs;

5.创建带有口令以角色(在生效带有口令的角色时必须提供口令)

sql>create role role1 identified by password1;

6.修改角色:是否需要口令

sql>alter role role1 not identified;

sql>alter role role1 identified by password1;

7.设置当前用户要生效的角色

(注:角色的生效是一个什么概念呢?假设用户ab1,b2,b3三个角色,那么如果b1未生效,则b1所包含的权限对于a来讲是不拥有的,只有角色生效了,角色内的权限才作用于用户,最大可生效角色数由参数MAX_ENABLED_ROLES设定;在用户登录后,oracle将所有直接赋给用户的权限和用户默认角色中的权限赋给用户。)

sql>set role role1;//使role1生效

sql>set role role,role2;//使role1,role2生效

sql>set role role1 identified by password1;//使用带有口令的role1生效

sql>set role all;//使用该用户的所有角色生效

sql>set role none;//设置所有角色失效

sql>set role all except role1;//role1外的该用户的所有其它角色生效。

sql>select * from SESSION_ROLES;//查看当前用户的生效的角色。

8.修改指定用户,设置其默认角色

sql>alter user user1 default role role1;

sql>alter user user1 default role all except role1;

详见oracle参考文档

9.删除角色

sql>drop role role1;

角色删除后,原来拥用该角色的用户就不再拥有该角色了,相应的权限也就没有了。

 

权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:

 

   Object 对象级

   System 系统级

   Role 角色级

 

  这些权限可以授予给用户、特殊用户public或角色,如果授予一个权限给特殊用户"Public"(用户publicoracle预定义的,每个用户享有这个用户享有的权限),那么就意味作将该权限授予了该数据库的所有用户。

 

  对管理权限而言,角色是一个工具,权限能够被授予给一个角色,角色也能被授予给另一个角色或用户。用户可以通过角色继承权限,除了管理权限外角色服务没有其它目的。权限可以被授予,也可以用同样的方式撤销。

  建立和使用角色

  如前所诉,角色存在的目的就是为了使权限的管理变得轻松。建立角色使用CREATE ROLE语句,他的语法如下:

CREATE ROLE role_name IDENTIFIED BY password

CREATE ROLE role_name IDENTIFIED EXTERNALLY

CREATE ROLE role_name IDENTIFIED GLOBALLY

 

  缺省情况下建立的角色没有password或者其他的识别。如果使用IDENTIFIED BY子句建立,那么角色不会自动响应,必须用SET ROLE激活。

 

SET ROLE role_name IDENTIFIED BY password

 

  EXTERNALLYGLOBALLY类型的角色由操作系统和ORACLE Service server验证。通常用户需要权限修改应用程序中使用的表单中的数据,但是只有在应用程序运行时而不是在使用ad hoc工具时,这种上下文敏感安全可以通过有PASSWORD的角色来实现。当用户在应用程序内部连结数据库时,代码将执行SET ROLE命令,通过安全验证。所以用户不需要知道角色的password,也不需要自己输入SET ROLE命令。

 

  对象权限

 

  对象权限就是指在表、视图、序列、过程、函数或包等对象上执行特殊动作的权利。有九种不同类型的权限可以授予给用户或角色。如下表:

权限 ALTER DELETE EXECUTE INDEX INSERT READ REFERENCE SELECT UPDATE

Directory no no no no no yes no no no

function no no yes no no no no no no

procedure no no yes no no no no no no

package no no yes no no no no no no

DB Object no no yes no no no no no no

Libary no no yes no no no no no no

Operation no no yes no no no no no no

Sequence yes no no no no no no no no

Table yes yes no yes yes no yes yes yes

Type no no yes no no no no no no

View no yes no no yes no no yes yes

 对象由不止一个权限,特殊权限ALL可以被授予或撤销。如TABLEALL权限就包括:

   SELECT,INSERT,UPDATEDELETE,还有INDEX,ALTER,REFERENCE

  如何看这个表我们以ALTER权限为例进行说明

  ALTER权限

  允许执行ALTER TABLELOCK TABLE操作,ALTER TABLE可以进行如下操作:

    . 更改表名

    . 增加或删除列

    . 改变列的数据类型或大小

    . 将表转变为分区表

  SEQUENCE上的ALTER权限允许执行ALTER Sequence语句,重新给sequence分配最小值、增量和缓冲区大小。

 

  系统权限

  系统权限需要授予者有进行系统级活动的能力,如连接数据库,更改用户会话、建立表或建立用户等等。你可以在数据字典视图SYSTEM_PRIVILEGE_MAP上获得完整的系统权限。对象权限和系统权限都通过GRANT语句授予用户或角色。需要注意的是在授予对象权限时语句应该是WITH GRANT OPTION子句,但在授予系统权象时语句是WITH ADMIN OPTION,所以在你试图授予系统权限时,使用语句WITH GRANT OPTION系统会报告一个错误:ONLY ADMIN OPTION can be specified。在考试中要特别注意这个语法和错误信息。

 

  角色和角色权限

 

  角色权限就是将属于用户的权限授予一个角色。任何权限都可以授予给一个角色。授予系统权限给被授予者必须使用WITH_ADMIN_OPTION子句,在会话期间通过SET ROLE语句授予或撤销角色权限。然而,角色权限不能依靠存储在SQL中的权限。如果函数、程序、包、触发器或者方法使用另一个计划拥有的对象,那么就必须直接给对象的拥有者授权,这是因为权限不会在会话之间改变。

 

  授予和撤销权限

 

   给用户或者角色授予权限使用GRANT语句,GRANT语句的语法如下:

 

GRANT ROLE(或system privilege TO user(role,Public) WITH ADMIN OPTION(可选)

 

  对象权限被授予 WITH GRANT OPTION

 

  权限和数据字典

 

  数据字典是ORACLE存储有关数据库结构信息的地方,数据本身存放在其他地方,数据字典由表和视图组成。在考试中关于数据字典最容易考的内容是:查看那一类权限已经被授予。比如DBA_TAB_PRIV包含了用户授予给另一用户的对象权限和在授予时是否带有WITH GRANT OTPION子串的信息。注意DBA_TAB_PRIV不仅仅包含了对表的权限的关系,他还包括函数、包、队列等等上的权限的关系。

 

主要是看你附的权限,Oracle里面是可以设置的,很简单,在角色管理里面点点就可以了

具体权限看你自己了,选项里面描述的很全
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle是一种关系型数据库管理系统,它提供了一套完整的数据库管理和应用开发工具。在Oracle中,角色是一种权限管理机制,用于控制用户对数据库对象的访问权限。以下是Oracle中常见的角色及其功能: 1. DBA角色(Database Administrator):拥有最高级别的权限,可以管理整个数据库系统,包括创建、修改和删除数据库对象,以及授权其他用户的权限。 2. SYSDBA角色:与DBA角色类似,但是SYSDBA角色是用于连接到数据库实例的特殊权限。只有具有SYSDBA角色的用户才能执行某些特定的操作,如启动和关闭数据库实例。 3. SYSOPER角色:与SYSDBA角色类似,但是SYSOPER角色是用于执行一些更加基本的操作,如启动和关闭数据库实例,但不能进行一些高级的管理操作。 4. CONNECT角色:提供了一些基本的数据库对象访问权限,如连接到数据库、创建表、插入数据等。 5. RESOURCE角色:提供了更多的数据库对象访问权限,如创建表空间、创建索引、创建触发器等。 6. DBA_RECYCLEBIN角色:用于管理回收站中的对象,可以恢复或者删除回收站中的对象。 7. AUDIT_ADMIN角色:用于管理审计功能,可以配置和查看数据库的审计信息。 8. EXECUTE_CATALOG_ROLE角色:用于执行Oracle数据库的内部存储过程和函数。 9. SELECT_CATALOG_ROLE角色:用于查询Oracle数据库的内部视图和表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值