我有一个Oracle视图,它使用我在任何地方都找不到的表.但是,我仍然可以查询视图,我认为这是不可能的.
视图内容是否缓存在某个地方,从表格仍然存在的时候开始,还是我对表格看起来不够努力?
为了清楚起见:我已经查看了ALL_TABLES和ALL_OBJECTS,并且表中(或其他任何内容)都没有出现.
这很有可能.在视图上授予select不会在基础表上授予select.这允许我创建一个视图,从表中公开一些我不希望你看到的列.您必须具有对表的访问权限才能在ALL_TABLES视图中显示它.如果它确实是一个表,您应该能够在DBA_TABLES视图中找到它(假设您可以访问DBA_TABLES视图),该视图包含所有内容,而不仅仅是您的用户拥有权限的表.
事实上,ALL_TABLES视图就是这种情况的完美例子.我打赌你也找不到该视图中使用的表,因为你可能没有它所基于的SYS表的权限(例如SYS.user $,SYS.obj $等).
还要检查"缺失"表是否实际上是同义词:
SELECT table_owner, table_name
FROM all_synonyms
WHERE table_name = 'MISSING_TABLE';
Run Code Online (Sandbox Code Playgroud)
如果它不是同义词,请尝试查看表的all_tables字典视图:
SELECT owner, table_name
FROM all_tables
WHERE table_name = 'MISSING_TABLE';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3296 次 |
| 最近记录: |