假设我以USERA身份登录,我想访问USERB架构的所有user_ *视图,例如user_tables,user_tab_columns。我怎样才能做到这一点?感谢
答案 0 :(得分: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_ *视图的访问权限。
答案 1 :(得分:2)
USER_%
次视图会提供您拥有的内容,即您的架构中的内容。ALL_%
次观看即可获取您有权访问的内容。所以你真正应该使用的是ALL_TABLES / etc,并授予对USERB
个对象的适当访问权。
答案 2 :(得分:0)
假设您有权限,可以尝试:
ALTER SESSION SET CURRENT_SCHEMA = USERB;