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.