ORA-00942:表或视图不存在(在同一个DB上的另一个模式上)

时间:2014-12-11 13:35:14

标签: sql database oracle oracle11g database-administration

当模式/用户 HR 访问时,可以访问USER_OBJECTS,即

select count(*) from USER_OBJECTS; returns 1005    

但是,当我们使用 DEV 架构/用户执行以下查询时,会出现 ORA-00942 错误。

select count(*) from HR.USER_OBJECTS

ORA-00942:表或视图不存在

我与 HR 用户建立了连接,并已将USER_OBJECTS的选择授权提供给 DEV 架构。使用以下查询

grant select on USER_OBJECTS To DEV

但是,使用 DEV 架构/用户名执行桌面上的选择人员是可以的。

从HR.PERSON中选择计数(*)

请告知我该怎么做才能完成这项工作? USER_OBJECTS归当前用户所有?

2 个答案:

答案 0 :(得分:1)

User_objects是仅限当前登录用户的系统视图。

你需要使用

SELECT count(*) from All_Objects where owner = 'HR'

答案 1 :(得分:1)

视图USER_OBJECTS由用户SYS拥有,并且有一个公共同义词USER_OBJECTS,它指向SYS.USER_OBJECTS ...因此,任何没有模式前缀SYS.USER_OBJECTS的用户都可以使用USER_OBJECTS。 / p>

视图USER_OBJECTS始终显示当前用户的对象。这意味着select count(*) from USER_OBJECTS的结果可能是HR,1005和SCOTT,20。

您无需授予任何查询视图的权限。任何可以连接到数据库的用户都可以查询此视图。