对于如何获得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; 。
全部