对于如何获得ORACLE对象权限 系统权限 角色权限 ,oracle提供了以DBA_* ROLE_* SESSION_* 等开头的系统视图供用户查询权限分配的信息,我们也可以通过OEM等其他工具来得到这些权限,在这里我们如果通过TABLE FUNCTION来获得这些权限.声明:由于获得权限需要系统视图的支持,我们需要dba_sys_privs,dba_role_privs,role_sys_privs,role_tab_privs,dba_tables有读权限,当然,可以把下面的包建立在sys用户下面,也可以通过授权模式在其他用户上使用.
创建包:
1:创建对象
SQL>create type PrivsList is table of varchar2(4000);
SQL>/
2:创建包
包中只列举了一些常用的获得权限的功能
create or replace package ManPrivs is
—Author : LIYAN
—Created : 2009-8-26 10:06:18
—Purpose :
–执行此包中过程需要对dba_sys_privs,dba_role_privs,role_sys_privs,role_tab_privs,dba_tables有读权限
–并且拥有DBA授权能力
–建议系统权限以及角色权限授权、权限回收操作使用OEM完成
–查询角色包含角色权限建议使用OEM完成
Function ListTabPrivs(ObjOwner varchar2 , ObjName varchar2 default null, Privs varchar2 default null, IsRevoke varchar2 default ‘N’,
Grantee varchar2 default null) return PrivsList pipelined;
/*查看对象的表格权限
Example:
select * from table(manprivs.ListTabPrivs(‘sh,hr’,“,‘select,update,delete,insert’,'N‘,'PUBLIC’));
*/
Function ListSysPrivs(ObjOwner varchar2 default null) return PrivsList pipelined;
/*产看对象的系统权限
Example:
select * from table(ManPrivs.ListSysPrivs(‘sh,hr’));
*/
Function ListRolePrivs(ObjOwner varchar2 default null) return PrivsList pipelined ;
/*查看对象的角色权限
Example:
select * from table(ManPrivs.ListRolePrivs(‘sh,hr’));
*/
Function ListRoleSysPrivs(ObjOwner varchar2 default null) return PrivsList pipelined ;
/*查看对象拥有角色的系统权限
Example:
select * from table(ManPrivs.ListRoleSysPrivs(‘sh,hr’));
*/
Function ListRoleTabPrivs(ObjOwner varchar2 default null) return PrivsList pipelined ;
/*查看对象拥有角色的表格权限
Example:
SELECT * fROM TABLE(MANPRIVS.ListRoleTabPrivs(‘SH,HR’))
*/
–Function ListRoleRolePrivs(ObjOwner varchar2 default null) return PrivsList pipelined ;
Procedure RevokeTabPrivs(ObjOwner varchar2, ObjName varchar2 default null, Privs varchar2 default null,
Grantee varchar2 default null);
/*回收对象的表格权限
Example:
Execute ManPrivs.RevokeTabPrivs(‘HR’,“,”,‘PUBLIC’)
*/
Procedure GrantTabPrivs(ObjOwner varchar2, ObjName varchar2, Privs varchar2,
Grantee varchar2);
/*对特定的对象进行授予特殊权限
Example:
Execute ManPrivs.GrantTabPrivs(‘hr’,'jobs‘,’select,update,insert‘,'public’)
*/
end ManPrivs;
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|