程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 獲得Oracle權限的TABLE FUNCTION實操

獲得Oracle權限的TABLE FUNCTION實操

編輯:Oracle數據庫基礎

你是否對獲得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:創建對象

  1. SQL>create type PrivsList is table of varchar2(4000);  
  2. 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完成

  1. Function ListTabPrivs(ObjOwner varchar2 , 
    ObjName varchar2 default null, Privs varchar2 default null, 
    IsRevoke varchar2 default ‘N’,  
  2. Grantee varchar2 default null) return PrivsList pipelined;  

查看對象的表格Oracle權限

  1. Example:  
  2. select * from table(manprivs.ListTabPrivs(‘sh,hr’,“,‘select,update,delete,insert’,'N‘,'PUBLIC’));  
  3. */  
  4. Function ListSysPrivs(ObjOwner varchar2 default null) return PrivsList pipelined;  

產看對象的系統權限

  1. Example:  
  2. select * from table(ManPrivs.ListSysPrivs(‘sh,hr’));  
  3. */  
  4. Function ListRolePrivs(ObjOwner varchar2 default null) return PrivsList pipelined ;  

查看對象的角色Oracle權限

  1. Example:  
  2. select * from table(ManPrivs.ListRolePrivs(‘sh,hr’));  
  3. */  
  4. Function ListRoleSysPrivs(ObjOwner varchar2 default null) return PrivsList pipelined ;  

查看對象擁有角色的系統權限

  1. Example:  
  2. select * from table(ManPrivs.ListRoleSysPrivs(‘sh,hr’));  
  3. */  
  4. Function ListRoleTabPrivs(ObjOwner varchar2 default null) return PrivsList pipelined ;  

查看對象擁有角色的表格權限

  1. Example:  
  2. SELECT * fROM TABLE(MANPRIVS.ListRoleTabPrivs(‘SH,HR’))  
  3. */  
  4. Function ListRoleRolePrivs(ObjOwner varchar2 default null) return PrivsList pipelined ;  
  5. Procedure RevokeTabPrivs(ObjOwner varchar2, ObjName varchar2 default null, Privs varchar2 default null,  
  6. Grantee varchar2 default null);  

回收對象的表格Oracle權限

  1. Example:  
  2. Execute ManPrivs.RevokeTabPrivs(‘HR’,“,”,‘PUBLIC’)  
  3. */  
  4. Procedure GrantTabPrivs(ObjOwner varchar2, ObjName varchar2, Privs varchar2,  
  5. Grantee varchar2);  

對特定的對象進行授予特殊Oracle權限

  1. Example:  
  2. Execute ManPrivs.GrantTabPrivs(‘hr’,'jobs‘,’select,update,insert‘,'public’)  
  3. */  
  4. end ManPrivs;  

上述的相關內容就是對通過TABLE FUNCTION獲得Oracle權限的描述,希望會給你帶來一些幫助在此方面。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved