Więcej
Pobierz listę wszystkich tabel w Oracle?
Jak mogę wyświetlić nazwy wszystkich tabel w bazie danych Oracle?
1069
3
Jak mogę wyświetlić nazwy wszystkich tabel w bazie danych Oracle?
To jest zakładając, że masz dostęp do widoku słownika danych
DBA_TABLES
. Jeśli nie posiadasz tych uprawnień, ale ich potrzebujesz, możesz poprosić DBA o jawne nadanie uprawnień do tej tabeli lub o nadanie uprawnieniaSELECT ANY DICTIONARY
lub roliSELECT_CATALOG_ROLE
(oba te uprawnienia pozwalają na zapytanie do dowolnej tabeli słownika danych). Oczywiście, możesz chcieć wykluczyć pewne schematy, takie jakSYS
iSYSTEM
, które zawierają dużą liczbę tabel Oracle, które prawdopodobnie nie są dla Ciebie ważne.Alternatywnie, jeśli nie masz dostępu do
DBA_TABLES
, możesz zobaczyć wszystkie tabele, do których Twoje konto ma dostęp poprzez widokALL_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 ma dostęp).Jeśli interesują Cię tylko tabele, które posiadasz, a nie te, do których masz dostęp, możesz użyć
USER_TABLES
:Ponieważ
USER_TABLES
zawiera tylko informacje o tabelach, których jesteś właścicielem, nie posiada kolumnyOWNER
- właścicielem, z definicji, jesteś Ty.Oracle posiada również wiele starszych widoków słownika danych -
TAB
,DICT
,TABS
iCAT
na przykład - które mogą być użyte. Ogólnie rzecz biorąc, nie sugerowałbym używania tych widoków, chyba że absolutnie musisz wykonać backport swoich skryptów do Oracle 6. Oracle nie zmieniło tych widoków przez długi czas, więc często mają one problemy z nowszymi typami obiektów. Na przykład, widokiTAB
iCAT
pokazują informacje o tabelach, które są w koszu użytkownika' podczas gdy widoki[DBA|ALL|USER]_TABLES
odfiltrowują je.CAT
pokazuje również informacje o logach widoku zmaterializowanego zTABLE_TYPE
o wartości "TABLE", co jest mało prawdopodobne, aby było tym, czego naprawdę chcesz.DICT
łączy tabele i synonimy i'nie mówi kto jest właścicielem obiektu.Zapytania do
user_tables
idba_tables
nie działały'.To zadziałało:
Spróbuj wybrać z user_tables, który wyświetla tabele należące do bieżącego użytkownika.