獲得Oracle權(quán)限的TABLE FUNCTION實(shí)操
你是否對(duì)獲得Oracle對(duì)象的權(quán)限的實(shí)際操作感到十分頭疼?如果是這樣子的話,以下的文章將會(huì)給你相應(yīng)的解決方案,以下的文章主要是介紹獲得Oracle權(quán)限的方案,即,通過TABLE FUNCTION獲得Oracle權(quán)限。
系統(tǒng)權(quán)限 角色權(quán)限 ,Oracle提供了以DBA_* ROLE_* SESSION_* 等開頭的系統(tǒng)視圖供用戶查詢權(quán)限分配的信息,我們也可以通過OEM等其他工具來得到這些權(quán)限,在這里我們?nèi)绻ㄟ^TABLE FUNCTION來獲得這些Oracle權(quán)限.
聲明:由于獲得權(quán)限需要系統(tǒng)視圖的支持,我們需要dba_sys_privs,dba_role_privs,role_sys_privs,role_tab_privs,dba_tables有讀Oracle權(quán)限,當(dāng)然,可以把下面的包建立在sys用戶下面,也可以通過授權(quán)模式在其他用戶上使用.
創(chuàng)建包:
1:創(chuàng)建對(duì)象
- SQL>create type PrivsList is table of varchar2(4000);
- SQL>/
2:創(chuàng)建包
包中只列舉了一些常用的獲得Oracle權(quán)限的功能
create or replace package ManPrivs is
—Author : LIYAN
—Created : 2009-8-26 10:06:18
—Purpose :
執(zhí)行此包中過程需要對(duì)dba_sys_privs,dba_role_privs,role_sys_privs,role_tab_privs,dba_tables有讀權(quán)限
并且擁有DBA授權(quán)能力
建議系統(tǒng)權(quán)限以及角色權(quán)限授權(quán)、權(quán)限回收操作使用OEM完成
查詢角色包含角色權(quán)限建議使用OEM完成
- Function ListTabPrivs(ObjOwner varchar2 ,
ObjName varchar2 default null, Privs varchar2 default null,
IsRevoke varchar2 default ‘N’,- Grantee varchar2 default null) return PrivsList pipelined;
查看對(duì)象的表格Oracle權(quán)限
- Example:
- select * from table(manprivs.ListTabPrivs(‘sh,hr’,“,‘select,update,delete,insert’,'N‘,'PUBLIC’));
- */
- Function ListSysPrivs(ObjOwner varchar2 default null) return PrivsList pipelined;
產(chǎn)看對(duì)象的系統(tǒng)權(quán)限
- Example:
- select * from table(ManPrivs.ListSysPrivs(‘sh,hr’));
- */
- Function ListRolePrivs(ObjOwner varchar2 default null) return PrivsList pipelined ;
查看對(duì)象的角色Oracle權(quán)限
- Example:
- select * from table(ManPrivs.ListRolePrivs(‘sh,hr’));
- */
- Function ListRoleSysPrivs(ObjOwner varchar2 default null) return PrivsList pipelined ;
查看對(duì)象擁有角色的系統(tǒng)權(quán)限
- Example:
- select * from table(ManPrivs.ListRoleSysPrivs(‘sh,hr’));
- */
- Function ListRoleTabPrivs(ObjOwner varchar2 default null) return PrivsList pipelined ;
查看對(duì)象擁有角色的表格權(quán)限
- 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);
回收對(duì)象的表格Oracle權(quán)限
- Example:
- Execute ManPrivs.RevokeTabPrivs(‘HR’,“,”,‘PUBLIC’)
- */
- Procedure GrantTabPrivs(ObjOwner varchar2, ObjName varchar2, Privs varchar2,
- Grantee varchar2);
對(duì)特定的對(duì)象進(jìn)行授予特殊Oracle權(quán)限
- Example:
- Execute ManPrivs.GrantTabPrivs(‘hr’,'jobs‘,’select,update,insert‘,'public’)
- */
- end ManPrivs;
上述的相關(guān)內(nèi)容就是對(duì)通過TABLE FUNCTION獲得Oracle權(quán)限的描述,希望會(huì)給你帶來一些幫助在此方面。
【編輯推薦】