如何从另一个模式中选择Oracle模式特定的视图

Mar*_*n08 2 sql oracle view grant

假设我以USERA身份登录,我想访问USERB架构的所有user_*视图,例如user_tables,user_tab_columns.我怎样才能做到这一点?谢谢

Jus*_*ave 5

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

如果要查看有关UserB表的信息

SELECT *
  FROM all_tables
 WHERE owner = 'USERB';
Run Code Online (Sandbox Code Playgroud)

要么

SELECT *
  FROM dba_tables
 WHERE owner = 'USERB';
Run Code Online (Sandbox Code Playgroud)

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