ORA-01435:访问Oracle中的V$Locked_对象时用户不存在

ORA-01435:访问Oracle中的V$Locked_对象时用户不存在,oracle,oracle12c,Oracle,Oracle12c,我正在尝试运行下面某个用户的查询 从V$Locked_对象中选择*公共同义词 也试过 从SYS.V_u$LOCKED_对象中选择* 而且越来越多 ORA-01435: user does not exist 01435. 00000 - "user does not exist" *Cause: *Action: 我已经从SYS给了一些用户这些授权 将SYS.V_u$LOCKED_对象上的select授予某个_用户;仍然得到相同的错误 我注意到我可以访问某些用户中的其他公共同义词,如

我正在尝试运行下面某个用户的查询

从V$Locked_对象中选择*公共同义词

也试过

从SYS.V_u$LOCKED_对象中选择*

而且越来越多

ORA-01435: user does not exist
01435. 00000 -  "user does not exist"
*Cause:    
*Action:
我已经从SYS给了一些用户这些授权

将SYS.V_u$LOCKED_对象上的select授予某个_用户;仍然得到相同的错误

我注意到我可以访问某些用户中的其他公共同义词,如V$LOCK\u活动、V$LOCK\u类型等。仅在尝试V$LOCK\u对象和V$LOCK时出现此错误。请建议我可能缺少一些基础知识

Oracle版本-Oracle数据库12c企业版12.2.0.1.0版-64位生产版
从SYS.V$locked_objects中选择*我建议您检查元数据

首先,检查对象是否存在于数据库中,我肯定它存在,但仍然要进行双重检查

我希望您有权访问dba_%对象

select * from dba_objects where object_name like 'V%LOCKED%OBJ%';
然后,检查您是否具有访问该对象的权限

select * from all_objects where object_name like 'V%LOCKED%OBJ%';
如果该对象存在于dba_uu表中,并且在all_uu中找不到,则表示您没有该对象的权限。执行以下步骤进行双重检查

select * 
  from user_tab_privs 
 where table_name like 'V%LOCKED%OBJ%';
这里可能什么也找不到,因为找不到对象,所以接下来我要检查的是有权访问该特定对象的角色名

select * 
  from role_tab_privs
 where table_name like 'V%LOCKED%OBJ%';
然后,检查是否已将该角色分配给用户

select * from session_roles

我希望这会有所帮助

我不认为我的数据库中有任何这样的对象获取ORA-00942:表或视图不存在您一直在谈论某个用户,但您授予自动化数据库。是同一个用户吗?@hotfix是的,我写错了。现在编辑问题。