你是否對獲得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權限的描述,希望會給你帶來一些幫助在此方面。