你是否对获得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>create type PrivsList is table of varchar2(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完成
- Function ListTabPrivs(ObjOwner varchar2 ,
ObjName varchar2 default null, Privs varchar2 default null,
IsRevoke varchar2 default ‘N’,- Grantee varchar2 default null) return PrivsList pipelined;
查看对象的表格Oracle权限
- 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 ;
查看对象的角色Oracle权限
- 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);
回收对象的表格Oracle权限
- Example:
- Execute ManPrivs.RevokeTabPrivs(‘HR’,“,”,‘PUBLIC’)
- */
- Procedure GrantTabPrivs(ObjOwner varchar2, ObjName varchar2, Privs varchar2,
- Grantee varchar2);
对特定的对象进行授予特殊Oracle权限
- Example:
- Execute ManPrivs.GrantTabPrivs(‘hr’,'jobs‘,’select,update,insert‘,'public’)
- */
- end ManPrivs;
上述的相关内容就是对通过TABLE FUNCTION获得Oracle权限的描述,希望会给你带来一些帮助在此方面。
【编辑推荐】