SELECT owner, table_name
FROM dba_tables
Zakładamy, że masz dostęp do DBA_TABLES
widok słownika danych. Jeśli nie masz tych uprawnień, ale ich potrzebujesz, możesz zażądać, aby administrator DBA jawnie przyznał Ci uprawnienia do tej tabeli lub aby administrator DBA przyznał Ci SELECT ANY DICTIONARY
uprawnienia lub SELECT_CATALOG_ROLE
rola (każda z nich pozwoliłaby na zapytanie dowolnej tabeli słownika danych). Oczywiście możesz chcieć wykluczyć pewne schematy, takie jak SYS
i SYSTEM
które mają dużą liczbę tabel Oracle, których prawdopodobnie nie obchodzisz.
Alternatywnie, jeśli nie masz dostępu do DBA_TABLES
, możesz zobaczyć wszystkie tabele, do których Twoje konto ma dostęp, poprzez ALL_TABLES
widok:
SELECT owner, table_name
FROM all_tables
Chociaż może to być podzbiór tabel dostępnych w bazie danych (ALL_TABLES
pokazuje informacje dla wszystkich tabel, do których użytkownik uzyskał dostęp).
Jeśli interesują Cię tylko tabele, których jesteś właścicielem, a nie te, do których masz dostęp, możesz użyć USER_TABLES
:
SELECT table_name
FROM user_tables
Od USER_TABLES
zawiera tylko informacje o tabelach, które posiadasz, nie ma OWNER
kolumna – właścicielem z definicji jesteś Ty.
Oracle ma również wiele starszych widoków słowników danych — TABS
, DICT
, TABS
i CAT
na przykład - to mogłoby być użyte. Ogólnie rzecz biorąc, nie sugerowałbym używania tych starszych widoków, chyba że absolutnie musisz przenieść swoje skrypty do Oracle 6. Oracle nie zmieniało tych widoków od dłuższego czasu, więc często mają problemy z nowszymi typami obiektów. Na przykład TABS
i CAT
oba widoki pokazują informacje o tabelach znajdujących się w koszu użytkownika, podczas gdy [DBA|ALL|USER]_TABLES
wszystkie widoki je odfiltrowują. CAT
pokazuje również informacje o logach widoku zmaterializowanego z TABLE_TYPE
"TABELI", który prawdopodobnie nie będzie tym, czego naprawdę chcesz. DICT
łączy tabele i synonimy i nie mówi, kto jest właścicielem obiektu.