2011-01-14 50 views
2

假设我登录的USERA选择一个特定的Oracle架构的观点,我想访问所有的用户_ *意见USERB模式,如USER_TABLES,USER_TAB_COLUMNS。我怎样才能做到这一点?谢谢如何从另一个架构

回答

5

所有USER_ *表都具有带ALL_ *和DBA_ *前缀的类似物。 USER_TABLES有关于您拥有的所有表格的信息。 ALL_TABLES有关于您有权访问的所有表的信息。 DBA_TABLES有关于数据库中所有表的信息。

如果你想看到用户B的表

SELECT * 
    FROM all_tables 
WHERE owner = 'USERB'; 

SELECT * 
    FROM dba_tables 
WHERE owner = 'USERB'; 

,如果你有用户B的表的SELECT访问前将工作信息。如果您的DBA授予您对DBA_TABLES视图的访问权限,后者将起作用。通常通过授予SELECT ANY DICTIONARY特权(或先前版本中的SELECT_CATALOG_ROLE)来完成,尽管DBA可以授予对单个DBA_ *视图的访问权限。

2
  • USER_%查看给你所拥有的,这就是你的模式。
  • ALL_% views给你什么访问权限。

所以你真正应该使用的是ALL_TABLES/etc,并授予对USERB对象的适当访问权限。

0

假设你有权限,你可以尝试:

ALTER SESSION SET CURRENT_SCHEMA = USERB;

+1

我有权访问所需的用户,但是这种方法对我来说不起作用..它仍然没有从目标模式返回表 – 2014-07-18 18:39:17