向其他用户授予对v $ session的SELECT访问权限

时间:2017-10-04 10:10:09

标签: oracle oracle11gr2

我想向Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

中的其他用户授予对v $ session的SELECT访问权限

但是当我运行此查询时:

SELECT owner, object_type FROM dba_objects WHERE object_name = 'V$SESSION';

我收到了这个错误:

00942. 00000 -  "table or view does not exist"

2 个答案:

答案 0 :(得分:4)

Oracle v $视图名为V_ $ VIEWNAME,它们具有V $ VIEWNAME格式的同义词,您无法为同义词授予权限。如果您想要授予V $视图的权限,您必须如下所示:

///<reference path="../node_modules/electron/electron.d.ts" />

答案 1 :(得分:0)

我们还需要没有访问v $ session权限的普通用户来清理会话。函数将以拥有架构的特权执行,因此,如果您以有权访问V $ SESSION的用户身份创建函数,则可以从没有所需特权的用户处执行该函数。

例如,IFH_OWNER有权访问v $ session,而用户ID854812没有:

为id854812:

select count(*) from v$session
ORA-00942: table or view does not exist

作为IFH_OWNER:

select count(*) from v$session
56

create or replace function getSessionCount return int
as
  vCnt int;
begin
  select count(*) into vCnt from v$session;
  return( vCnt);
end;

select getSessionCount from dual;
56

grant execute on getSessionCount to id854812;

为id854812:

select ifh_owner.getSessionCount from dual;
56