首页 文章

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

提问于
浏览
1

当架构/用户 HR 访问时,USER_OBJECTS可以访问

select count(*) from USER_OBJECTS; returns 1005

但是,当我们使用 DEV schema / user执行以下查询时,它会给出 ORA-00942 错误 .

select count(*) from HR.USER_OBJECTS

ORA-00942: table or view does not exist

我与 HR 用户连接,并已将USER_OBJECTS的选择授权给予 DEV 架构 . 使用以下查询

grant select on USER_OBJECTS To DEV

但是,使用 DEV 架构/用户名在HR表上执行select是正常的 .

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

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

2 回答

  • 1

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

    你需要使用

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

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

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

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

相关问题