sys.gv_ $ instance上授予选择的超时

时间:2018-09-12 09:41:06

标签: oracle

以SYS用户身份执行以下授予时:

grant select on sys.gv_$instance to <username>;

我有时会超时:

SQL Error: ORA-04021: timeout occurred while waiting to lock object

我有一个可以工作的测试数据库,还有一个我得到超时(或者有时几分钟后可以工作)的测试数据库。两者都是Oracle 12。 超时/锁定是否有原因? 作为解决方法,我创建了一个视图并将该视图授予始终有效的用户。

1 个答案:

答案 0 :(得分:1)

您可以:

  1. 重启 Oracle 12c 数据库,然后执行授权语句。 或
  2. 找出阻止授权的会话/进程并将其终止:
select inst_id, username, BLOCKING_SESSION_STATUS, BLOCKING_INSTANCE,
 BLOCKING_SESSION, SID, SERIAL#
from gv$session
where username is not null;

获取阻止授权的帐户的 SID 和会话号(在我的例子中是 DBSNMP),以 SYS 身份登录到正确的数据库实例并杀死它:

alter system kill session ','immediate;

(用正确的数字替换文本和 ,例如: 立即更改系统终止会话 '438,48555';)