what tables are returned by using (in oracle)
select * from tab
and
select * from all_tables
I would like to know the difference between two.
tab
is an ancient data dictionary table that should never be used. It exists solely to provide backwards compatibility for scripts that were written potentially decades ago. tab
does not get updated as new object types and new features get added.
all_tables
gives you information about all the tables that you have access to.tab
gives you information about tables, views, and synonyms that you own (making it more similar to views like user_tables
, user_synonyms
, and user_views
). It doesn't know about things like the recycle bin, though, so tab
will show you all the tables with names like BIN$+K4PlriXSGetpagyHCvBGA==$0
that are in the recycle bin. Realistically, any object types that have been added at least since the Oracle 7 days are likely to create problems for legacy data dictionary tables like tab
.