SELECT owner, table_name
FROM dba_tables
Detta förutsätter att du har tillgång till DBA_TABLES
dataordbokvy. Om du inte har dessa privilegier men behöver dem, kan du begära att DBA uttryckligen ger dig privilegier på den tabellen, eller att DBA ger dig SELECT ANY DICTIONARY
privilegium eller SELECT_CATALOG_ROLE
roll (som båda skulle tillåta dig att fråga vilken dataordbokstabell som helst). Naturligtvis kanske du vill utesluta vissa scheman som SYS
och SYSTEM
som har ett stort antal Oracle-tabeller som du förmodligen inte bryr dig om.
Alternativt, om du inte har tillgång till DBA_TABLES
, kan du se alla tabeller som ditt konto har åtkomst till genom ALL_TABLES
visa:
SELECT owner, table_name
FROM all_tables
Även om det kan vara en delmängd av tabellerna som är tillgängliga i databasen (ALL_TABLES
visar dig informationen för alla tabeller som din användare har fått åtkomst till).
Om du bara bryr dig om de tabeller du äger, inte de som du har tillgång till, kan du använda USER_TABLES
:
SELECT table_name
FROM user_tables
Sedan USER_TABLES
har bara information om tabellerna som du äger, den har ingen OWNER
kolumn – ägaren, per definition, är du.
Oracle har också ett antal äldre dataordboksvyer-- TAB
, DICT
, TABS
och CAT
till exempel-- som kan användas. I allmänhet skulle jag inte föreslå att du använder dessa äldre vyer om du inte absolut behöver backportera dina skript till Oracle 6. Oracle har inte ändrat dessa vyer på länge så de har ofta problem med nyare typer av objekt. Till exempel, TAB
och CAT
vyerna visar båda information om tabeller som finns i användarens papperskorg medan [DBA|ALL|USER]_TABLES
visningar filtrerar alla bort dem. CAT
visar även information om materialiserade vyloggar med en TABLE_TYPE
av "TABELL" som sannolikt inte är vad du verkligen vill ha. DICT
kombinerar tabeller och synonymer och berättar inte vem som äger objektet.