发布日期:2018-03-26
问题:在Oracle中获取所有表目录?+ 查看更多
问题:在Oracle中获取所有表目录?
+ 查看更多
发布日期:2018-02-23 10:02
分类:SQL
浏览次数:162
描述:要怎样查询Oracle数据库中所有的表名?
解答:
解答:
SELECT owner, table_name FROM dba_tables
假设你有权利看到DBA_TABLES的数据字典,你可以使用上面的方法。如果你没有权利,但又需要访问,你可以直接请求DBA授予你权限使用所有表,或者DBA授予SELECT ANY DICTIONARY、SELECT_CATALOG_ROLE权限,这两个特权都可以让你完成目的。这样你可以排除掉一些Ocacle中一些很多而且你根本用不到的表比如:SYS、SYSTEM。
还有一种可能,你没有权限访问DBA_TABLES,你就只能查询你账号创建的所有表。
还有一种可能,你没有权限访问DBA_TABLES,你就只能查询你账号创建的所有表。
SELECT owner, table_name FROM all_tables这些只能让你访问数据库中的一部分由你自己创建的表。
如果你只想查询一些用户拥有的表,那么你可以这样
SELECT table_name FROM user_tables
因为user_tables中只含有用户创建的表信息,没有定义一个栏目叫做owner。
Oracle有一些过时可用的数据字典:TAB, DICT, TABS,*和 CAT。我不建议使用这些过时的视图除非一定要在Oracle6上安装补丁。Oracle已经很久没有维护这些视图,所以经常会有一些问题出现。比如:TAB 和 CAT会显示一些已经被过滤器过滤掉的信息。CAT还会显示一些实体化视图,这些可能都是你不想得到的。DICT会将表和数据库指针结合在一起,而且很难辨别所拥有的对象是哪一个。
Oracle有一些过时可用的数据字典:TAB, DICT, TABS,*和 CAT。我不建议使用这些过时的视图除非一定要在Oracle6上安装补丁。Oracle已经很久没有维护这些视图,所以经常会有一些问题出现。比如:TAB 和 CAT会显示一些已经被过滤器过滤掉的信息。CAT还会显示一些实体化视图,这些可能都是你不想得到的。DICT会将表和数据库指针结合在一起,而且很难辨别所拥有的对象是哪一个。