SELECT owner, table_name
FROM dba_tables
Dette forudsætter, at du har adgang til DBA_TABLES
dataordbogsvisning. Hvis du ikke har disse privilegier, men har brug for dem, kan du anmode om, at DBA eksplicit giver dig privilegier på den tabel, eller at DBA giver dig SELECT ANY DICTIONARY
privilegiet eller SELECT_CATALOG_ROLE
rolle (hvoraf begge vil give dig mulighed for at forespørge i enhver dataordbogstabel). Selvfølgelig vil du måske udelukke visse skemaer såsom SYS
og SYSTEM
som har et stort antal Oracle-tabeller, som du sikkert er ligeglad med.
Alternativt, hvis du ikke har adgang til DBA_TABLES
, kan du se alle de tabeller, som din konto har adgang til via ALL_TABLES
se:
SELECT owner, table_name
FROM all_tables
Selvom det kan være en undergruppe af de tilgængelige tabeller i databasen (ALL_TABLES
viser dig oplysningerne for alle de tabeller, som din bruger har fået adgang til).
Hvis du kun er bekymret for de tabeller, du ejer, ikke dem, du har adgang til, kan du bruge USER_TABLES
:
SELECT table_name
FROM user_tables
Siden USER_TABLES
har kun information om de tabeller, du ejer, den har ikke en OWNER
kolonne – ejeren er per definition dig.
Oracle har også en række ældre dataordbogsvisninger - TAB
, DICT
, TABS
og CAT
for eksempel - det kunne bruges. Generelt vil jeg ikke foreslå at bruge disse ældre visninger, medmindre du absolut har brug for at backportere dine scripts til Oracle 6. Oracle har ikke ændret disse visninger i lang tid, så de har ofte problemer med nyere typer objekter. For eksempel TAB
og CAT
visninger viser begge oplysninger om tabeller, der er i brugerens papirkurv, mens [DBA|ALL|USER]_TABLES
visninger filtrerer alle dem fra. CAT
viser også oplysninger om materialiserede visningslogfiler med en TABLE_TYPE
af "TABEL", hvilket næppe er det, du virkelig ønsker. DICT
kombinerer tabeller og synonymer og fortæller dig ikke, hvem der ejer objektet.