Oracle – Reasons Why a Table Wouldn’t Show in sys.dba_tables

indexoracletable

I have 2 queries

 SELECT *
 FROM sys.dba_indexes
 WHERE Table_Name = 'XDB$RESOURCE'

and

 SELECT *
 FROM sys.dba_tables 
 WHERE Table_Name = 'XDB$RESOURCE'

Are there any reasons why a table wouldn't show in sys.dba_tables? As far as I've read all tables should show here, hence why I'm using this rather than all_tables.

Can an index in Oracle be against a deleted table?

Does sys.dba_tables show data relevant to access you have, and if so is there any table that rather brings back nothing than half the data?

Relatively new to Oracle, any explanation or advice appreciated.

Best Answer

You are right. XDB$RESOURCE is not in DBA_TABLES. It is in DBA_OBJECT_TABLES, because it is an object table.

Object tables are listed in {DBA,ALL,USER}_OBJECT_TABLES. All regular (non-object) tables are in {DBA,ALL,USER}_TABLES.