SELECT owner, table_name
FROM dba_tables
To za předpokladu, že máte přístup k DBA_TABLES
pohled na datový slovník. Pokud tato oprávnění nemáte, ale potřebujete je, můžete požádat, aby vám DBA výslovně udělil oprávnění k této tabulce, nebo aby vám DBA udělil SELECT ANY DICTIONARY
oprávnění nebo SELECT_CATALOG_ROLE
role (kterákoliv z nich vám umožní dotazovat se na jakoukoli tabulku datového slovníku). Samozřejmě můžete chtít vyloučit určitá schémata jako SYS
a SYSTEM
které mají velké množství tabulek Oracle, které vás pravděpodobně nezajímají.
Případně, pokud nemáte přístup k DBA_TABLES
, můžete zobrazit všechny tabulky, ke kterým má váš účet přístup, prostřednictvím ALL_TABLES
zobrazit:
SELECT owner, table_name
FROM all_tables
I když to může být podmnožina tabulek dostupných v databázi (ALL_TABLES
zobrazí informace o všech tabulkách, ke kterým byl vašemu uživateli udělen přístup).
Pokud vás zajímají pouze tabulky, které vlastníte, nikoli ty, ke kterým máte přístup, můžete použít USER_TABLES
:
SELECT table_name
FROM user_tables
Od USER_TABLES
má pouze informace o tabulkách, které vlastníte, nemá OWNER
sloupec – vlastníkem jste podle definice vy.
Oracle má také řadu starších zobrazení datového slovníku -- TAB
, DICT
, TABS
a CAT
například-- to by se dalo použít. Obecně bych nedoporučoval používat tyto starší pohledy, pokud nezbytně nepotřebujete backportovat své skripty do Oracle 6. Oracle tyto pohledy dlouho nezměnil, takže mají často problémy s novějšími typy objektů. Například TAB
a CAT
oba pohledy zobrazují informace o tabulkách, které jsou v koši uživatele, zatímco [DBA|ALL|USER]_TABLES
zobrazení všechny je odfiltrují. CAT
také zobrazuje informace o protokolech materializovaných zobrazení s TABLE_TYPE
"TABLE", což pravděpodobně nebude to, co opravdu chcete. DICT
kombinuje tabulky a synonyma a neřekne vám, kdo je vlastníkem objektu.