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
问问题
8316 次
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 回答