你是否对获得Oracle对象的权限的实际操作感到十分头疼?如果是这样子的话,以下的文章将会给你相应的解决方案,以下的文章主要是介绍获得Oracle权限的方案,即,通过TABLE FUNCTION获得Oracle权限。
系统权限 角色权限 ,Oracle提供了以DBA_* ROLE_* SESSION_* 等开头的系统视图供用户查询权限分配的信息,我们也可以通过OEM等其他工具来得到这些权限,在这里我们如果通过TABLE FUNCTION来获得这些Oracle权限.
声明:由于获得权限需要系统视图的支持,我们需要dba_sys_privs,dba_role_privs,role_sys_privs,role_tab_privs,dba_tables有读Oracle权限,当然,可以把下面的包建立在sys用户下面,也可以通过授权模式在其他用户上使用.
创建包:
1:创建对象
SQL>createtypePrivsLististableofvarchar2(4000); SQL>/
2:创建包
包中只列举了一些常用的获得Oracle权限的功能
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完成
FunctionListTabPrivs(ObjOwnervarchar2, ObjNamevarchar2defaultnull,Privsvarchar2defaultnull, IsRevokevarchar2default‘N’, Granteevarchar2defaultnull)returnPrivsListpipelined;
查看对象的表格Oracle权限
Example: select*fromtable(manprivs.ListTabPrivs(‘sh,hr’,“,‘select,update,delete,insert’,'N‘,'PUBLIC’)); */ FunctionListSysPrivs(ObjOwnervarchar2defaultnull)returnPrivsListpipelined;
产看对象的系统权限
Example: select*fromtable(ManPrivs.ListSysPrivs(‘sh,hr’)); */ FunctionListRolePrivs(ObjOwnervarchar2defaultnull)returnPrivsListpipelined;
查看对象的角色Oracle权限
Example: select*fromtable(ManPrivs.ListRolePrivs(‘sh,hr’)); */ FunctionListRoleSysPrivs(ObjOwnervarchar2defaultnull)returnPrivsListpipelined;
查看对象拥有角色的系统权限
Example: select*fromtable(ManPrivs.ListRoleSysPrivs(‘sh,hr’)); */ FunctionListRoleTabPrivs(ObjOwnervarchar2defaultnull)returnPrivsListpipelined;
查看对象拥有角色的表格权限
Example: SELECT*fROMTABLE(MANPRIVS.ListRoleTabPrivs(‘SH,HR’)) */ FunctionListRoleRolePrivs(ObjOwnervarchar2defaultnull)returnPrivsListpipelined; ProcedureRevokeTabPrivs(ObjOwnervarchar2,ObjNamevarchar2defaultnull,Privsvarchar2defaultnull, Granteevarchar2defaultnull);
回收对象的表格Oracle权限
Example: ExecuteManPrivs.RevokeTabPrivs(‘HR’,“,”,‘PUBLIC’) */ ProcedureGrantTabPrivs(ObjOwnervarchar2,ObjNamevarchar2,Privsvarchar2, Granteevarchar2);
对特定的对象进行授予特殊Oracle权限
Example: ExecuteManPrivs.GrantTabPrivs(‘hr’,'jobs‘,’select,update,insert‘,'public’) */ endManPrivs;