oracle地系统和对象权限
- 格式:doc
- 大小:103.00 KB
- 文档页数:15
Oracle中sys和system⽤户、系统权限和⾓⾊的区别1)最重要的区别,存储的数据的重要性不同【sys】所有oracle的数据字典的基表和视图都存放在sys⽤户中,这些基表和视图对于oracle的运⾏是⾄关重要的,由数据库⾃⼰维护,任何⽤户都不能⼿动更改。
sys⽤户拥有dba,sysdba,sysoper等⾓⾊或权限,是oracle权限最⾼的⽤户。
【system】⽤户⽤于存放次⼀级的内部数据,如oracle的⼀些特性或⼯具的管理信息。
system⽤户拥有普通dba⾓⾊权限。
2)其次的区别,权限的不同。
【system】⽤户只能⽤normal⾝份登陆em,除⾮你对它授予了sysdba的系统权限或者syspoer系统权限。
【sys】⽤户具有“SYSDBA”或者“SYSOPER”系统权限,登陆em也只能⽤这两个⾝份,不能⽤normal。
以sys⽤户登陆Oracle,执⾏select * from V_$PWFILE_USERS;可查询到具有sysdba权限的⽤户,如:复制代码代码如下:SQL> select * from V_$PWFILE_USERS; USERNAME SYSDBA SYSOPER SYS TRUE TRUESysdba和sysoper两个系统权限区别normal 、sysdba、 sysoper有什么区别normal 是普通⽤户另外两个,你考察他们所具有的权限就知道了sysdba拥有最⾼的系统权限,登陆后是 syssysoper主要⽤来启动、关闭数据库,sysoper 登陆后⽤户是 publicsysdba和sysoper属于system privilege,也称为administrative privilege,拥有例如数据库开启关闭之类⼀些系统管理级别的权限sysdba和sysoper具体的权限可以看下表:oracle <wbr>sys和system⽤户区别system如果正常登录,它其实就是⼀个普通的dba⽤户,但是如果以as sysdba登录,其结果实际上它是作为sys⽤户登录的,这⼀点类似Linux⾥⾯的sudo的感觉,从登录信息⾥⾯我们可以看出来。
oracle的grant用法GRANT是一个Oracle数据库的SQL命令,用于向用户或角色授予特定的系统权限或对象权限。
语法如下:GRANT privilege_name [, privilege_name]...TO user_name [, user_name]...[WITH ADMIN OPTION][ROLE role_name [, role_name]...];其中,- privilege_name 表示要授予的权限,可以是一个或多个权限,例如SELECT、INSERT、UPDATE、DELETE等。
- user_name 表示要授予权限的用户,可以是一个或多个用户,例如SCOTT、HR等。
- WITH ADMIN OPTION表示授予权限的用户能够将这些权限再授予给其他用户。
- ROLE role_name表示要授予的角色,可以是一个或多个角色。
以下是一些示例:1. 授予用户SCOTT对表EMP的SELECT权限:GRANT SELECT ON EMP TO SCOTT;2. 授予用户HR对表DEPT的SELECT和INSERT权限,并允许其将这些权限再授予其他用户:GRANT SELECT, INSERT ON DEPT TO HR WITH ADMINOPTION;3. 授予角色MANAGER对表EMP的SELECT权限,并授予用户SCOTT该角色:GRANT SELECT ON EMP TO MANAGER;GRANT MANAGER TO SCOTT;4. 授予用户SYSDBA管理员权限:GRANT SYSDBA TO SYS;5. 授予用户DBA所有系统权限:GRANT ALL PRIVILEGES TO DBA;以上只是GRANT命令的一些常见用法示例,实际应用中可以根据具体需求灵活使用。
一、概述Oracle数据库是当前企业中常用的数据库管理系统之一,而数据库管理人员在企业中扮演着至关重要的角色,他们负责数据库的管理与维护,包括权限设置与分配。
本文将探讨Oracle数据库管理人员权限设置及分配表的相关内容。
二、数据库管理员的权限1. 数据库管理员(DBA)是Oracle数据库中最高权限的用户,具有对数据库进行全面控制的特权。
他们可以创建、修改、删除数据库对象,分配SQL权限,管理数据库用户和角色等。
2. DBA用户的权限通常由系统管理员在安装数据库时创建,或是通过GRANT命令授予。
3. DBA用户可以通过GRANT和REVOKE命令控制其他用户的权限,以及管理数据库对象的安全性。
三、数据库操作员的权限1. 数据库操作员(DBO)是在数据库中具有一定权限的用户,通常负责对数据库进行日常操作。
2. DBO用户可以执行SELECT、INSERT、UPDATE、DELETE等操作,并且可以创建临时表和视图。
3. DBO用户的权限通常由DBA用户通过GRANT命令分配,可以根据需要灵活控制其权限范围。
四、权限设置的最佳实践1. 了解业务需求:在设置数据库用户的权限之前,需要充分了解企业的业务需求,确保每个用户都能够在权限范围内完成工作。
2. 分配最小权限原则:根据最小权限原则,应该仅分配用户所需的最低权限,以降低数据泄露和操作错误的风险。
3. 定期审计权限:定期对数据库用户的权限进行审计,及时发现和修复不合理的权限设置,保障数据库的安全性。
五、权限分配表的编制数据库管理人员需要编制一份权限分配表,清晰地记录每个用户的权限范围,确保权限设置的合理性与一致性。
权限分配表通常包括以下内容:1. 用户名称:列出数据库中所有的用户名称。
2. 权限说明:对用户的权限进行详细说明,包括SELECT、INSERT、UPDATE、DELETE等操作的权限范围。
3. 是否受限:记录是否对用户的权限进行了限制,比如是否禁止用户执行DROP TABLE等危险操作。
如何查看oracle⽤户具有的权限和⾓⾊1.查看所有⽤户:select*from dba_users;select*from all_users;select*from user_users;2.查看⽤户或⾓⾊系统权限(直接赋值给⽤户或⾓⾊的系统权限):select*from dba_sys_privs;select*from user_sys_privs;3.查看⾓⾊(只能查看登陆⽤户拥有的⾓⾊)所包含的权限sql>select*from role_sys_privs;4.查看⽤户对象权限:select*from dba_tab_privs;select*from all_tab_privs;select*from user_tab_privs;5.查看所有⾓⾊:select*from dba_roles;6.查看⽤户或⾓⾊所拥有的⾓⾊:select*from dba_role_privs;select*from user_role_privs;7.查看哪些⽤户有sysdba或sysoper系统权限(查询时需要相应权限)select*from V$PWFILE_USERS⽐如我要查看⽤户 wzsb的拥有的权限:SQL>select*from dba_sys_privs where grantee='WZSB';GRANTEE PRIVILEGE ADMIN_OPTION------------------------------ ---------------------------------------- ------------WZSB CREATE TRIGGER NOWZSB UNLIMITED TABLESPACE NO⽐如我要查看⽤户 wzsb的拥有的⾓⾊:SQL>select*from dba_role_privs where grantee='WZSB';GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE------------------------------ ------------------------------ ------------ ------------WZSB DBA NO YES查看⼀个⽤户所有的权限及⾓⾊select privilege from dba_sys_privs where grantee='WZSB'unionselect privilege from dba_sys_privs where grantee in(select granted_role from dba_role_privs where grantee='WZSB' );。
Oracle 管理对象权限对象权限指访问其他用户模式对象的权利。
在Oracle数据库中,用户可以直接访问其模式对象,但如果要访问其他用户的模式对象时,必须具有相应的对象权限。
1.对象权限的分类根据不同的对象类型,Oracle数据库设置了不同类型的对象权限。
对象权限及对象之间的对应关系如表13-5所示。
表13-5 对象、对象权限的对应关系ALTE R DELETEEXECUTEINDEXINSERTRREADREFERENCESELECTUPDA TEDIRECTORY√FUNCTION √PROCEDURE√PACKAGE √SEQUENCE √√TABLE √√√√√√√VIEW √√√√其中,“√”表示某种对象所具有的对象权限,空格表示该对象没有某种权限。
例如,对于基本表TABLE,具有ALTER、DELETE、INDEX、INSERT、REFERENCES、SELECT、UPDATE权限,而没有EXECUTE权限。
多种权限组合在一起时,可以使用ALL关键字,表示该对象的全部权限,对于不同的对象,ALL组合的权限数量是不相同的。
对于表TABLE而言,ALL表示ALTER、DELETE、INDEX、INSERT、REFERENCES、SELECT、UPDATE权限;对于存储过程,ALL只代表EXECUTE权限。
2.授予对象权限对象权限由该对象的拥用者为其他用户授权,非对象的拥有者不得向其他用户授予对象授权。
将对象权限授出后,获权用户可以对对象进行相应的操作,没有授予的权限不得操作。
从Oracle 9i开始,DBA用户可以将任何对象权限授予其他用户。
授予对象权限所使用的GRANT语句形式如下:grant { object_priv [ (column_list) ] [,object_priv[(column_list)]]….| ALL [PRIVILEGES] ON [ schema.]objectTO { user | role | PUBLIC} [,{user | role | public}] …[with grant option]其中,OBJECT_PRIV是对象权限,COLUMN_LIST用于标识权限所对应列的列表,SCHEMA表示模式名,USER表示被授权的用户,ROLE表示被授权的角色。
oracle如何进行授权3.6.1、系统权限系统权限(System Privilege)向用户提供了执行某一种或某一类型的数据库操作的能力,有近100种系统权限。
系统权限不是控制对指定数据库对象的访问,而是用来许可对各种特性的访问,或许可Oracle数据库中的特定任务。
以下是常用的系统权限create cluster 在自己模式中创建聚簇drop cluster 删除自己模式中的聚簇create procedure创建存储过程、函数和包drop procedure 删除存储过程、函数和包create database link 创建数据库链路权限,通过数据库链路允许用户存取过程的数据库drop database link 删除数据库链路create sequence 创建序列drop any sequence 删除序列create trigger 创建触发器drop trigger 删除触发器create table 创建表alter any table 修改表drop any table 删除表create view 创建视图drop view 删除视图create type 创建对象类型drop any type 删除对象类型create procedure创建存储过程、程序包和函数drop any procedure 删除过程、程序包和函数授权格式:GRANT PRIVILEGE_NAME TO USER_NAME收回权限格式REVOKE PRIVILEGE_NAME FROM USER_NAME例:grant create view to hr;3.6.2、对象权限对象权限控制用户是否能在特定数据库对象(如表、视图或存储过程)上执行特定类型的操作。
授予具体的对象权限格式:GRANT PRIVILEGE_NAME ON 对象TO USER_NAME例:grant select,update,delete on jobs to test; --授予用户test在表jobs 上执行select,update,delete操作的权限授予对象的列权限的格式:GRANT PRIVILEGE_NAME(COL_NAME ) ON 对象TO USER_NAME例:grant update(job_title,min_salary) on jobs to test;授予用户test在表jobs的字段job_title、min_salary 的update的权限收回权限格式REVOKE PRIVILEGE_NAME FROM USER_NAME。
oracle grant select on 列字段-概述说明以及解释1.引言1.1 概述概述:在Oracle数据库中,权限控制是确保数据库安全性的关键部分。
数据库管理员通过授予用户不同的权限来控制其对数据库对象的访问和操作权限。
Grant Select on 列字段是一种重要的权限控制方式,它可以精确地控制用户对表中特定列的查询权限。
本文将介绍Oracle中权限控制的基本概念,详细解释Grant Select on 列字段的作用及语法,探讨Grant Select on 列字段在提高数据库安全性方面的重要性。
最后,我们将讨论一些安全性考虑,为数据库管理员提供建议和展望。
通过深入了解Grant Select on 列字段的使用方法,可以帮助管理员更好地保护数据库中的敏感数据,并确保数据的完整性和安全性。
1.2 文章结构文章结构部分包括本文的主要内容和组织方式。
本文将首先介绍Oracle中的权限控制的基本概念,然后详细探讨Grant Select on 列字段的作用及其在数据库中的重要性。
接着,我们将深入讨论Grant Select on 列字段的语法和具体用法。
最后,我们将总结Grant Select on 列字段的重要性,探讨安全性考虑,并提出建议和展望。
通过这样的结构,读者可以清晰地了解本文的内容和逻辑顺序。
1.3 目的:在Oracle数据库中,权限控制是非常重要的。
Grant Select on 列字段作为其中的一种权限控制方式,其目的是为了确保数据的安全性和完整性。
通过授予用户对指定列字段的查询权限,可以实现对数据的精细化控制,避免未经授权的用户获取敏感信息,同时也可以限制用户的操作范围,防止误操作导致数据丢失或损坏。
此外,Grant Select on 列字段还可以帮助管理者更好地管理数据库的权限,提高数据库的安全性和可维护性。
通过有效地利用Grant Select on 列字段的机制,可以建立更为严谨的权限体系,确保每个用户只能访问其需要的数据,避免权限过大或过小造成的安全问题。
oracle授权机制Oracle授权机制是指在Oracle数据库中对用户和角色进行授权和权限管理的机制。
通过授权,可以限制用户对数据库对象的访问和操作,保证数据的安全性和完整性。
在Oracle数据库中,授权是通过使用GRANT和REVOKE语句来实现的。
GRANT语句用于授权,REVOKE语句用于回收权限。
授权可以分为系统级授权和对象级授权两种。
系统级授权是指对用户和角色进行授权,控制其对整个数据库实例的访问权限。
通过GRANT语句可以授予用户和角色系统级权限,如CREATE SESSION、CONNECT、CREATE TABLESPACE等。
系统级权限授权给用户后,用户可以连接到数据库实例并执行相应的操作。
对象级授权是指对数据库对象(如表、视图、存储过程等)进行授权,控制用户对这些对象的访问和操作权限。
通过GRANT语句可以授予用户对特定对象的SELECT、INSERT、UPDATE、DELETE 等权限。
对象级授权可以细粒度地控制用户对数据库对象的操作,提高数据的安全性。
在进行授权时,可以指定授权的粒度和范围。
粒度可以是对象级、行级或列级。
对象级授权是指对整个对象进行授权,行级授权是指对对象中的某些行进行授权,列级授权是指对对象中的某些列进行授权。
范围可以是用户级、角色级或全局级。
用户级授权是指将权限授予特定用户,角色级授权是指将权限授予角色,全局级授权是指将权限授予所有用户。
除了GRANT和REVOKE语句外,Oracle还提供了其他一些相关的语句和视图来管理和查询授权信息。
例如,可以使用ALTER USER语句修改用户的权限,使用GRANT ROLE语句将角色授予用户,使用ROLE_TAB_PRIVS视图查看角色的权限等。
在实际应用中,需要根据业务需求和安全要求来设计和管理授权机制。
合理的授权设计可以保证数据库的安全性和性能。
一般来说,应该遵循以下几个原则:1.最小权限原则:即给用户和角色授予最小必需的权限,避免赋予过多的权限,降低风险。
Oracle数据库GRANT用法1. 什么是GRANTGRANT是Oracle数据库中的一条授权命令,用于授予用户或角色对数据库对象的访问权限。
通过GRANT命令,可以将特定的权限授予用户或角色,使其能够执行特定的数据库操作。
2. GRANT命令语法GRANT命令的基本语法如下:GRANT privilege [, privilege...]ON objectTO {user | role | PUBLIC}[WITH GRANT OPTION];•privilege:表示要授予的权限,可以是系统权限或对象权限。
系统权限包括CREATE SESSION、ALTER SESSION、CREATE TABLESPACE等,对象权限包括SELECT、INSERT、UPDATE、DELETE等。
•object:表示要授予权限的对象,可以是表、视图、序列、存储过程等。
•user:表示要授予权限的用户。
•role:表示要授予权限的角色。
•PUBLIC:表示要授予权限给所有用户。
•WITH GRANT OPTION:表示授予的权限可以再次被授予给其他用户或角色。
3. 授权示例以下是一些常见的授权示例:3.1 授予SELECT权限给用户GRANT SELECT ON employees TO alice;上述语句将SELECT权限授予用户alice,使其能够查询employees表。
3.2 授予INSERT、UPDATE权限给角色GRANT INSERT, UPDATE ON orders TO sales_role;上述语句将INSERT和UPDATE权限授予角色sales_role,使其能够向orders表插入新记录并更新已有记录。
3.3 授予EXECUTE权限给用户GRANT EXECUTE ON procedure_name TO bob;上述语句将EXECUTE权限授予用户bob,使其能够执行名为procedure_name的存储过程。
oracle10g数据库管理应用与开发课后答案Oracle10g数据库管理应用与开发课后习题答案(填空与选择题)填空题第二章1.Oracle数据库系统的物理存储结构主要由3类文件组成,分别为数据文件、日志文件、控制文件。
2.用户对数据库的操作如果产生日志信息、则该日志信息首先被存储在日志缓冲区中,随后由LGWR进程保存到日志文件。
3.一个表空间物理上对应一个或多个数据文件。
4.在Oracle的逻辑存储结构中,根据存储数据的类型,可以将段分为数据段、索引段、回退段、LOB段和临时段。
5.在Oracle的逻辑存储结构中,数据块是最小的I/O单元。
6.在多进程Oracle实例系统中,进程分为用户进程、后台进程和服务器进程。
当一个用户运行应用程序,如PRO某C程序或一个Oracle工具(如SQL某Plu),系统将为用户运行的应用程序建立一个用户进程。
第三章1.标准的SQL语言语句类型可以分为:数据定义语句(DDL)、数据操纵语句(DML)和数据控制语句(DCL)。
2.在需要滤除查询结果中重复的行时,必须使用关键字Ditinct;在需要返回查询结果中的所有行时,可以使用关键字ALL。
3.如果需要在SELECT子句中包括一个表的所有列,可使用符号某。
4.如果定义与组有关的搜索条件,可以把groupby子句添加到SELECT语句中。
5.当进行模糊查询时,就使用关键字LIKE和通配符\或百分号\。
6.WHERE子句可以接收FROM子句输出的数据,而HAVING子句则可以接收来自groupby、FROM或where子句的输入。
GROUPBY供应商所在城市ORDERBY2DESC;第四章1.在SQL语句中,用于向表中插入数据的语句是Inert。
2.如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用elect语句。
3.创建一个UPDATE语句来修改ARTISTS表中的数据,并且把每一行的T_ID值都改成15,应该使用的SQL语句是updateartitett_id=15;。
Oracle新建用户、角色,授权,建表空间oracle数据库的权限系统分为系统权限与对象权限。
系统权限( database systemprivilege )可以让用户执行特定的命令集。
例如,create table权限允许用户创建表,grant any privilege 权限允许用户授予任何系统权限。
对象权限( database object privilege )可以让用户能够对各个对象进行某些操作。
例如delete权限允许用户删除表或视图的行,select权限允许用户通过select从表、视图、序列(sequences)或快照(snapshots)中查询信息。
每个oracle用户都有一个名字和口令,并拥有一些由其创建的表、视图和其他资源。
oracle角色(role)就是一组权限(privilege)(或者是每个用户根据其状态和条件所需的访问类型)。
用户可以给角色授予或赋予指定的权限,然后将角色赋给相应的用户。
一个用户也可以直接给其他用户授权。
一、创建用户oracle内部有两个建好的用户:system和sys。
用户可直接登录到system用户以创建其他用户,因为system具有创建别的用户的权限。
在安装oracle时,用户或系统管理员首先可以为自己建立一个用户。
例如:Sql代码create user user01 identified by u01;该命令还可以用来设置其他权限,详细情况参见自学资料。
要改变一个口令,可以使用alter user命令:<span style="white-space: pre;"> alter user user01 identified by usr01;</span><span style="white-space: pre;"><span style="white-space: normal;"> </span> </span>现在user01的口令已由“u01”改为“usr01”。
一、概述在现代信息技术领域,数据库扮演着至关重要的角色。
而Oracle数据库作为全球最为著名的关系型数据库管理系统之一,在企业级应用系统中被广泛使用。
而在管理Oracle数据库时,数据库授权是一项十分重要的工作。
本文将从Oracle数据库的授权规则出发,系统地介绍Oracle数据库授权的相关内容。
二、Oracle数据库授权的基本概念1. Oracle数据库授权的定义在数据库管理中,授权是指授权用户或角色访问数据库中对象的操作的过程。
授权规则则是指相应的授权原则和规定。
Oracle数据库授权即是指允许用户或角色对数据库对象进行访问和操作的权限规定。
2. Oracle数据库授权的类型Oracle数据库授权可以分为系统级授权和对象级授权两种类型。
系统级授权是对数据库中所有对象的权限进行授权,而对象级授权是对具体某个对象(如表、视图等)的权限进行授权。
三、Oracle数据库授权规则的具体内容1. 系统级授权规则(1)系统管理员权限授权:在Oracle数据库中,系统管理员(通常是sys用户)具有最高的权限,可以对所有对象进行操作。
在授权时,应谨慎授予系统管理员权限,以免造成数据库安全风险。
(2)特定角色授权:在Oracle数据库中,有一些特定的角色(如DBA角色、CONNECT角色等)拥有特定的权限。
在授权时,需要根据具体需求,合理授予相应的角色。
2. 对象级授权规则(1)表级权限授权:在Oracle数据库中,对表的权限授权是非常常见的操作。
授权对象可以是用户或者角色,授权的操作可以包括SELECT、INSERT、UPDATE、DELETE等。
(2)视图级权限授权:对视图的权限授权也同样重要,可以控制用户或角色对视图的查询权限。
(3)存储过程权限授权:对存储过程的权限授权可以控制哪些用户或角色可以执行特定的存储过程。
3. 其他规则(1)跨数据库授权:在复杂的系统环境中,可能存在跨多个Oracle数据库的授权问题。
oracle 查询用户权限的语句Oracle是一种关系型数据库管理系统,可以用来存储和管理大量的数据。
在Oracle中,用户权限是指用户对数据库对象(如表、视图、存储过程等)的访问和操作权限。
用户权限的查询可以帮助管理员了解当前用户的权限情况,以便进行权限管理和安全控制。
下面是一些查询用户权限的Oracle语句:1. 查询当前用户的所有权限:```SELECT * FROM USER_SYS_PRIVS;```该语句可以查询当前用户被授予的系统级权限,返回结果包括权限名称和授权者。
2. 查询当前用户对指定表的权限:```SELECT * FROM USER_TAB_PRIVS WHERE TABLE_NAME = '表名';```该语句可以查询当前用户对指定表的权限,返回结果包括权限类型(如SELECT、INSERT、UPDATE、DELETE等)、授权者和表名。
3. 查询当前用户对指定视图的权限:```SELECT * FROM USER_TAB_PRIVS WHERE TABLE_NAME = '视图名';```该语句可以查询当前用户对指定视图的权限,返回结果与查询表权限的语句相似。
4. 查询当前用户对指定存储过程的权限:```SELECT * FROM USER_PROC_PRIVS WHERE PROCEDURE_NAME = '存储过程名';```该语句可以查询当前用户对指定存储过程的权限,返回结果包括权限类型(如EXECUTE)、授权者和存储过程名。
5. 查询当前用户对指定包的权限:```SELECT * FROM USER_TAB_PRIVS WHERE TABLE_NAME = '包名';```该语句可以查询当前用户对指定包的权限,返回结果与查询表权限的语句相似。
6. 查询当前用户对指定序列的权限:```SELECT * FROM USER_TAB_PRIVS WHERE TABLE_NAME = '序列名';```该语句可以查询当前用户对指定序列的权限,返回结果与查询表权限的语句相似。
Oracle中的系统权限和对象权限
系统权限的定义
系统权限(system privilege):指在系统级控制数据库的存取和使用的机制,即执行某种SQL语句的能力。
如,是否能启动、停止数据库,是否能修改数据库参数,是否能连接到数据库,是否能创建、删除、更改方案对象(如表、索引、视图、过程)等。
它一般是针对某一类方案对象或非方案对象的某种操作的全局性能力。
提示”没有系统权限的用户实际上是个连登录能力都没有的、有名无实的用户。
在Oracle数据库中,SYSTEM是数据库管理员,他具有DBA角色,即具有DBA角色的所有系统权限,包括SELECT ANY DICTIONARY,所以,他可以查询数据字典中的、以“DBA_”开头的数据字典视图,如DBA_USERS。
系统权限的分类
每种系统权限都为用户提供了执行某一种或某一类系统级的数据库操作的权力,即系统级的DDL(Data Definition Language)语句、DML(Data Manipulation Language)语句的权力。
数据字典视图system_privilege_map 中包括了Oracle数据库中的所有系统权限。
查询该视图可以了解系统权限的信息,
查询系统权限的个数:
select coiunt(*)from system_privilege_map; 查询具体的系统权限
select * from system_privilege_map;
系统权限的类型、名称、说明
对象权限的定义
对象权限(object privilege):指在对象级控制数据库的存取和使用的机制,即访问其他用户的方案对象的能力。
如,用户可以存取哪个用户的方案中的哪个对象,是否能对该对象进行查询、插入、更新等。
对象权限一般是针对其他用户的某个特定的方案对象的某种操作的局部性能力。
提示”一个用户可以访问自己方案中的任何对象,并对其进行任何操作,即对自己的任何对象有任何对象权限。
对象权限的分类
Oracle数据库的方案对象主要是指:表、索引、视图、序列、同义词、过程、函数、包、触发器。
创建对象的用户拥有该对象的所有对象权限,不需要授予。
所以,对象权限的设置实际上是为对象的所有者给其他用户提供操作该对象的某种权力的一种方法。
Oracle数据库中总共有9种不同的对象权限。
不同类型的对象有不同的对象权限。
有些对象(如集群、索引、触发器、数据库连接)没有对应的对象权限,即他们是通过系统权限来控制的,例如,如要修改集群,用户必须要具有ALTER ANY CLUSTER系统权限。
对象、对象权限的对应关系如表所示。
能够在该对象上授予的对象权限用“√”表示。
对象权限及说明
对象权限说明
Alter 更改表上的ALTER权限保证在相关的表上执行ALTER TABLE 或LOCK TABLE语句。
可以重命名表、添加列、删除列、更改数据类型和列的长度,以及把表转换成一个分区(partitioned)表。
序列上的ALTER权限可以保证能够在相关序列上执行ALTER SEQUENCE语句,可以重设授权序列对象的最小值、增量和缓冲区大小
Delete 删除允许在授权对象上执行DELETE语句,以便从表或者视图中删除行。
SELECT权限必须随同DELETE权限授予,否则被授权的人将不能够选择行,因此也就无法删除行。
DELETE 权限还允许被授权者锁定相应的表
Execute 运行包上的EXECUTE权限允许被授权者执行或者使用在相应的包规定中声明的任何程序或者程序对象(如一个记录类型,
即record type或者指针即cursor)。
操作符(operator)或者类型(type)上的EXECUTE权限允许在SQL或者PL/SQL中使用该操作符。
数据库对象上的EXECUTE权限允许被授权者使用相关的数据库对象并且调用其方法
Index 索引允许被授权者在相关的表上创建索引或者锁定该表。
当一个方案(schema)拥有一个表而另一个方案拥有其索引的时候,会出现混乱。
在授予这种权限时要小心
Insert 插入允许被授权者在相关的表或视图中创建行。
如果该INSERT权限建立在相关表或者视图的特定列上,则只能在具有INSERT权限的列上插入数据。
INSERT权限还隐含地给被授权者以锁定该表的能力
Read 读只能在目录上授予。
允许被授权者读取指定目录中的BFILE。
Read权限与SELECT权限有区别,后者允许用户读取一个表或者视图
Reference 引用只能在表上授予用户,而不能授予角色。
允许被授权者创建引用该表的参照完整性约束。
被授权者可以锁定该表
Select 选择允许被授权者在表或者视图上执行SELECT语句。
允许被授权者读取表或者视图的内容。
序列上的SELECT权限允许被授权者获取当前值
(CURRVAL)或者通过选择NEXTVAL增大该值。
SELECT权限只能授予整个表,不能授予表中的列。
因此,如果希望用户只能查询表中的部分列,就需要在该表上创建视图,然后将该视图的SELECT权限授予用户。
Update 更新允许被授权者更改表或者视图中的数据值。
SELECT权限必须随同UPDATE权限一起授予,这样就使被授权者隐含具有了锁定表的能力
All 所有对于可以具有多项权限的对象,可以授予或者撤消专门的权限ALL。
对于表而言,ALL中包含了SELECT、INSERT、UPDATE 和DELETE以及INDEX、ALTER和REFERENCE。
所以,在表上授予AIL权限时要小心,因为可能并不想授予INDEX、ALTER和REFERENCE权限
角色定义:
我在前面的篇幅中说明权限和用户。
慢慢的在使用中你会发现一个问题:如果有一组人,他们的所需的权限是一样的,当对他们的权限进行管理的时候会很不方便。
因为你要对这组中的每个用户的权限都进行管理。
有一个很好的解决办法就是:角色。
角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限。
那么上述问题就很好处理了,
只要第一次将角色赋给这一组用户,接下来就只要针对角色进行管理就可以了。
以上是角色的一个典型用途。
其实,只要明白:角色就是一组权限的集合。
下面分两个部门来对oracle角色进行说明。
二、系统预定义角色
预定义角色是在数据库安装后,系统自动创建的一些常用的角色。
下介简单的介绍一下这些预定角色。
角色所包含的权限可以用以下语句查询:
sql>select * from role_sys_privs where role='角色名';
Eg: select * from role_sys_privs where role='DBA'; 1.CONNECT, RESOURCE, DBA
这些预定义角色主要是为了向后兼容。
其主要是用于数据库管理。
oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。
将来的版本中这些角色可能不会作为预定义角色。
2.DELETE_CATALOG_ROLE,EXECUTE_CATALOG_ROLE,SELECT_CATALOG_ROLE
这些角色主要用于访问数据字典视图和包。
3.EXP_FULL_DATABASE,IMP_FULL_DATABASE
这两个角色用于数据导入导出工具的使用。
4.AQ_USER_ROLE,AQ_ADMINISTRATOR_ROLE
AQ:Advanced Query。
这两个角色用于oracle高级查询功能。
5.SNMPAGENT
用于oracle enterprise manager和Intelligent Agent 6.RECOVERY_CATALOG_OWNER
用于创建拥有恢复库的用户。
关于恢复库的信息,参考oracle文档《Oracle9i User-Managed Backup and Recovery Guide》
7.HS_ADMIN_ROLE
A DBA using Oracle's heterogeneous services feature needs this role to access appropriate tables in the data dictionary.。