1、辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.1 系统权限的授予与撤消对于系统权限而言:开发者具有创建和删除数据对象的权限:vCLUSTER,PROCEDURE,ABLE ,VIEW,TRIGER,FUNCTION,PUBLIC SYNONYM,DATABASE LINK,PUBLIC SYNONYM,SEQUENCE,SNAPSHOTP,TYPE,LIBRARY DBA具有上述数据对象的any 权限,即在其他用户对象模式下,创建上述对象和删除上述对象的权限。此外,还具有对用户和角色
2、的管理权限。此外,DBA还具有对数据库的维护权限。v上述权限详见教材152-154页。辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.2 对象权限的授权与撤消 v一般情况下,我们先将对象的访问权授予某个角色,然后把角色授予用户v一般来说,如果系统并不复杂时常采用无角色的授权。v建议采用角色授权与用户授予角色的授权方式来管理系统。辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.2
3、 对象权限的授予与撤消GRANT system_privilege|role TO user|role|PUBLICWITH ADMIN OPTIONGRANT object_privilege|ALL column ON schema.objectFROM user|role|PUBLIC WITH GRANT OPTION辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.2 对象权限的授予与撤消object_privilege:对象的权限,可以是:ALTERDELETEEXECUTE
4、INDEXINSERTREFERENCESSELECTUPDATE辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.2 对象权限的授予与撤消v例1:GRANT INSERT,UPDATE ON sales TO larry WITH GRANT OPTION;v例2GRANT ALL TO PUBLIC;辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM例3:GRANT select O
5、N dept TO stu10,stu11;例4:GRANT select,insert(empno,ename),update(ename)ON emp TO scott WITH GRANT OPTION;10.2 对象权限的授予与撤消辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM对象特权的回收:例1:REVOKE select ON dept FROM stu10,stu11;例2:REVOKE all ON emp FROM scott;10.2 对象权限的授予与撤消辽宁工程技术大
6、学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.2 对象权限的授予与撤消本章难点:q权限的级联授予q级联授权通过参数来实现,它们是:v系统权限:with admin optionv对象权限:with grant option辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM回收对象特权的连锁反映分析:GRANTA ACB B10.2 对象权限的授予与撤消辽宁工程技术大学 软件工程系 E-MAIL:Y
7、GHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM回收对象特权的连锁反映分析:REVOKEABAB10.2 对象权限的授予与撤消CABABABAB?C辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.2 对象权限的授予与撤消实践是检验真理的唯一标准课堂实验:对象级联授权的实验辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM回收对象
8、特权的连锁反映分析:ACBRESULTACB10.2 对象权限的授予与撤消辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM行命令回收系统特权或角色:REVOKE FROM ,角色名系统特权名 用户名 角色名 public10.3 系统权限的授予与撤消辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.3 系统权限的授予与撤消GRANT system_privilege|role TO u
9、ser|role|PUBLICWITH ADMIN OPTION辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM例:从用户Bill和Mary回收DROP ANY TABLE系统特权。REVOKE drop any table FROM bill,mary;10.3 系统权限的授予与撤消辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM回收系统特权的连锁反映分析:GRANTAB BC C C1
10、0.3 系统权限的授予与撤消辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM回收系统特权的连锁反映分析:10.3 系统权限的授予与撤消REVOKECAB?CACAB辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.3 系统权限的授予与撤消实践是检验真理的唯一标准课堂实验:系统权限级联授权的实验辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP
11、:/BLOG.CAT898.COM/MY_VIEW.HTM回收系统特权的连锁反映分析:ACBCRESULTBC10.3 系统权限的授予与撤消辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM与特权有关的数据字典视图:DBA_SYS_PRIVS TABLE_PRIVILEGES COLUMN_PRIVILEGES ALL/USER_TAB_PRIVS ALL/USER_TAB_PRIVS_MADE ALL/USER_TAB_PRIVS_RECD ALL/USER_COL_PRIVS ALL/US
12、ER_COL_PRIVS_MADE ALL/USER_COL_PRIVS_RECD10.4 权限的授予与撤消辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.5 角色与授权v角色是一个数据库实体,它包括一组权限。即角色是包括一个或多个权限的集合。v它不被哪个用户拥有,它只能授予某些用户。v这些角色不要与用户名相同。v根据各个用户的情况(比如他们所担当的工作)来授予不同的角色。辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT
13、898.COM/MY_VIEW.HTM10.5 角色与授权 无角色管理的授权示意图用 户特 权辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.5 角色与授权使用角色管理的授权示意图用 户特 权角 色辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.5 角色与授权权限对 象 Alter Delete Execute Index Insert Read Reference Selec
14、t UpdateDirectorynononononoyesnononofunctionnonoyesnonononononoProcedurenonoyesnonononononoPackagenonoyesnonononononoDB ObjectnonoyesnonononononoLibrarynonoyesnonononononoOperatornonoyesnonononononoSequenceyesnoyesnonononoyesnoTableyesyesnoyesyesnoyesyesyesTypenonoyesnonononononoViewnoyesnonoyesnono
15、yesyes对象权限列表:辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.5 角色与授权角色名创建脚本说明CONNECTSQL.BSQ包括下面权限:ALTER SESSION,CREATE CLUSTER,CREATE DATABASE LINK,CREATE SEQUENCE,CREATE SESSION,CREATE SYNONYM,CREATE TABLE,CREATE VIEWRESOURCESQL.BSQ I包括下面权限:CREATE CLUSTER,CREATE INDEX
16、TYPE,CREATE OPERATOR,CREATEPROCEDURE,CREATE SEQUENCE,CREATE TABLE,CREATE TRIGGER,CREATE TYPEDBASQL.BSQ所有的管理权限常见的系统角色辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.5 角色与授权v1.CREATE ROLE语法CREATE ROLE role NOT IDENTIFIED|IDENTIFIED BY password|EXTERNALLY|GLOBALLY;role 角色
17、名IDENTIFIED BY password 角色口令IDENTIFIED BY EXETERNALLY 角色名在操作系统下验证。IDENTIFIED GLOBALLY 用户是ORACLE 安全域中心服务器来验证,此角色有全局用户来使用。辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.5 角色与授权示例:vCREATE ROLE vendor IDENTIFIED GLOBALLY;vCREATE ROLE teller IDENTIFIED BY cashflow;辽宁工程技术大学
18、 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.5 角色与授权2 给角色授权一旦角色建立完成,就可以对角色进行授权。给角色授权用GRANT语句实现。如果系统管理员具有GRANT_ANY_PRIVILEGE权限,则可以对某个角色进行授权。v示例:GRANT CREATE SESSION,CREATE DATABASE LINK to Manager;辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10
19、.5 角色与授权3 授予用户权限与角色对用户进行授权,包括给用户授予系统预定义的权限,也包括自定义的角色。用GRANT命令来实现给用户的权限与角色的授予。例1.下面语句将系统权限CREATE SESSION和ACCTS_PAY角色给JWARD用户:GRANT CREATE SESSION,accts_pay TO jward;例2.下面语句将SELECT,INSERT和 DELETE 授给jfee,tsmith用户:GRANT SELECT,INSERT,DELETE ON emp TO jfee,tsmith;辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLO
20、G:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.5 角色与授权v删除角色只要具有相应权限,就可以用DROP ROLE命令删除角色。如:DROP ROLE Manager;辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.5 角色与授权v角色的查询1.确定角色的权限授予用户某个角色,则角色的权限也就授予了用户,管理员需了解角色被授予那些权限,以便知道哪些角色是够用,或者应撤消哪些权限。vROLE_TAB_PRIVS 授予角色的对象权限vROLE_ROLE_PRI
21、VS 授予另一角色的角色vROLE_SYS_PRIVS 授予角色的系统权限 辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.5 角色与授权v2.确定用户所授予的权限为了维护用户,必须知道哪写 ORACLE 帐户被授予哪些权限,这些权限可能是直接授予,也可能是通过角色授予的。DBA_TAB_PRIVS 包含直接授予用户帐户的对象权限DBA_ROLE_PRIVS 包含授予用户帐户的角色DBA_SYS_PRIVS 包含授予用户帐户的系统权限辽宁工程技术大学 软件工程系 E-MAIL:YGHL
22、2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.6 有关的数据字典v与用户、角色权限有关的数据字典:vDBA_USERS 实例中有效的用户及相应信息。vDBA_TS_QUOTAS 用户对表空间的使用限制信息。vUSER_RESOURCE_LIMITS 用户资源的使用限制信息。vDBA_PROFILES 系统所有资源文件信息。vRESOURCE_COST 系统每个资源的代价。vV$SESSION 实例中会话的信息。vV$SESSTAT 实例中会话的统计。vV$STATNAME 实例中会话的统计代码名字。vDBA_ROLES 实例中已经创建
23、的角色的信息。vROLE_TAB_PRIVS 授予角色的对象权限。vROLE_ROLE_PRIVS 授予另一角色的角色。vROLE_SYS_PRIVS 授予角色的系统权限。vDBA_ROLE_PRIVS 授予用户和角色的角色。vSESSION_ROLES 用户可用的角色的信息。辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTMv如何查看oracle用户权限 1.oracle用户查看自己的权限和角色 select*from user_tab_privs;select*from user_role
24、_privs;2.sys用户查看任一用户的权限和角色 select*from dba_tab_privs;select*from dba_role_privs;辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTMvoracle中查看用户权限1.查看所有用户:select*from dba_user;select*from all_users;select*from user_users;2.查看用户系统权限:select*from dba_sys_privs;select*from all_sy
25、s_privs;select*from user_sys_privs;3.查看用户对象权限:select*from dba_tab_privs;select*from all_tab_privs;select*from user_tab_privs;4.查看所有角色:select*from dba_roles;5.查看用户所拥有的角色:select*from dba_role_privs;select*from user_role_privs;辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM
26、10.7 锁的定义及管理v掌握锁定的概念及其实现用法辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM10.7 锁的定义及管理v允许或拒绝资源访问的一种机制v资源可以是特定行或整个表v控制对数据的并发访问v防止在同时访问相同资源的用户之间出现破坏性的交互操作辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTMv锁定类型行级锁表级锁v行级锁行被排他锁定在某行的锁被释放之前,其他用户不能修改此行使用
27、 commit 或 rollback 命令释放锁Oracle 通过使用 INSERT、UPDATE 和 SELECTFOR UPDATE 语句自动获取行级锁10.7 锁的定义及管理辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTMvSELECTFOR UPDATE 子句在表的一行或多行上放置排他锁用于防止其他用户更新该行可以执行除更新之外的其他操作10.7 锁的定义及管理辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.C
28、OM/MY_VIEW.HTMvFOR UPDATE WAIT 子句Oracle9i 中的新增功能防止无限期地等待锁定的行允许对锁的等待时间进行更多的控制等待间隔必须指定为数值文字等待间隔不能是表达式、赋值变量或 PL/SQL变量10.7 锁的定义及管理辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTMv表级锁保护表的数据在多个用户同时访问数据时确保数据的完整性可以设置为三种模式:共享、共享更新和排他v语法:Lock table in ;10.7 锁的定义及管理辽宁工程技术大学 软件工程系 E-
29、MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTMv共享锁锁定表仅允许其他用户执行查询操作不能插入、更新和删除多个用户可以同时在同一表中放置此锁10.7 锁的定义及管理辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTMv共享更新锁锁定要被更新的行允许其他用户同时查询、插入、更新未被锁定的行在 SELECT 语句中使用“FOR UPDATE”子句,可以强制使用共享更新锁允许多个用户同时锁定表的不同行10.7 锁的定义及管理辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTMv排他锁与其他两种锁相比,排他锁是限制性最强的表锁仅允许其他用户查询数据不允许执行插入、删除和更新操作在同一时间仅允许一位用户在表上放置排他锁共享锁与此相反10.7 锁的定义及管理辽宁工程技术大学 软件工程系 E-MAIL:YGHL2000TOM.COM BLOG:HTTP:/BLOG.CAT898.COM/MY_VIEW.HTM