2

Suppose I'm logged in as USERA, I want to access all the user_* views of the USERB schema, such as user_tables, user_tab_columns. How can I do this? Thanks

4

3 回答 3

5

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

如果您想查看有关 UserB 的表的信息

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_* 视图的访问权限。

于 2011-01-14T20:56:50.913 回答
3
  • USER_%视图提供您拥有的东西,这就是您的架构中的内容。
  • ALL_%视图提供您可以访问的内容。

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

于 2011-01-14T20:55:36.937 回答
0

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

更改会话集 CURRENT_SCHEMA=USERB;

于 2011-01-14T21:01:16.763 回答