1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 数据库 - 正文

君子好学,自强不息!

获得Oracle权限的TABLE FUNCTION实操

2022-11-25 | 数据库 | gtxyzz | 625°c
A+ A-

你是否对获得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>createtypePrivsLististableofvarchar2(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完成

FunctionListTabPrivs(ObjOwnervarchar2,
ObjNamevarchar2defaultnull,Privsvarchar2defaultnull,
IsRevokevarchar2default‘N’, 
Granteevarchar2defaultnull)returnPrivsListpipelined; 

查看对象的表格Oracle权限

Example: 
select*fromtable(manprivs.ListTabPrivs(‘sh,hr’,“,‘select,update,delete,insert’,'N‘,'PUBLIC’)); 
*/ 
FunctionListSysPrivs(ObjOwnervarchar2defaultnull)returnPrivsListpipelined; 

产看对象的系统权限

Example: 
select*fromtable(ManPrivs.ListSysPrivs(‘sh,hr’)); 
*/ 
FunctionListRolePrivs(ObjOwnervarchar2defaultnull)returnPrivsListpipelined; 

查看对象的角色Oracle权限

Example: 
select*fromtable(ManPrivs.ListRolePrivs(‘sh,hr’)); 
*/ 
FunctionListRoleSysPrivs(ObjOwnervarchar2defaultnull)returnPrivsListpipelined; 

查看对象拥有角色的系统权限

Example: 
select*fromtable(ManPrivs.ListRoleSysPrivs(‘sh,hr’)); 
*/ 
FunctionListRoleTabPrivs(ObjOwnervarchar2defaultnull)returnPrivsListpipelined; 

查看对象拥有角色的表格权限

Example: 
SELECT*fROMTABLE(MANPRIVS.ListRoleTabPrivs(‘SH,HR’)) 
*/ 
FunctionListRoleRolePrivs(ObjOwnervarchar2defaultnull)returnPrivsListpipelined; 
ProcedureRevokeTabPrivs(ObjOwnervarchar2,ObjNamevarchar2defaultnull,Privsvarchar2defaultnull, 
Granteevarchar2defaultnull); 

回收对象的表格Oracle权限

Example: 
ExecuteManPrivs.RevokeTabPrivs(‘HR’,“,”,‘PUBLIC’) 
*/ 
ProcedureGrantTabPrivs(ObjOwnervarchar2,ObjNamevarchar2,Privsvarchar2, 
Granteevarchar2); 

对特定的对象进行授予特殊Oracle权限

Example: 
ExecuteManPrivs.GrantTabPrivs(‘hr’,'jobs‘,’select,update,insert‘,'public’) 
*/ 
endManPrivs; 

本文来源:1818IP

本文地址:https://www.1818ip.com/post/11673.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。