当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
通过TABLEFUNCTION获得ORACLE权限(一)
发布时间:2010/10/26 9:49:22 来源:www.xue.net 编辑:城市总裁吧

    对于如何获得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