Jak wyświetlić listę wszystkich tabel w schemacie w Oracle SQL?
159
Aby zobaczyć wszystkie tabele w innym schemacie, musisz mieć co najmniej jedno z następujących uprawnień systemowych:
SELECT ANY DICTIONARY
(SELECT | INSERT | UPDATE | DELETE) ANY TABLE
lub wielki młot, rola DBA.
Za pomocą dowolnego z nich możesz wybrać:
SELECT DISTINCT OWNER, OBJECT_NAME
FROM DBA_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Bez tych uprawnień systemowych możesz wyświetlać tylko tabele, do których masz przyznany pewien poziom dostępu, bezpośrednio lub za pośrednictwem roli.
SELECT DISTINCT OWNER, OBJECT_NAME
FROM ALL_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Wreszcie, zawsze możesz wysłać zapytanie do słownika danych o własne tabele, ponieważ Twoich praw do tabel nie można cofnąć (od 10g):
SELECT DISTINCT OBJECT_NAME
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
%_OBJECTS
zamiast%_TABLES
.DISTINCT
zapytaniu nie ma absolutnie żadnej potrzeby .owner, object_name
jest wyjątkowy wALL_OBJECTS
owner, object_name
nie jest w żaden sposób unikalny w dba_objects; Elementy pakietu i pakiety są wyświetlane w tym widoku, a tabele i indeksy znajdują się w różnych przestrzeniach nazw.źródło
Możesz zapytać
USER_TABLES
źródło
Jeśli zalogowałeś się jako zwykły użytkownik bez pozwolenia DBA, możesz użyć następującego polecenia, aby wyświetlić wszystkie tabele i widoki własnego schematu.
źródło
Spróbuj tego, wymień? z nazwą schematu
źródło
Jeśli uzyskujesz dostęp do Oracle za pomocą JDBC (Java), możesz użyć klasy DatabaseMetadata . Jeśli uzyskujesz dostęp do Oracle za pomocą ADO.NET, możesz użyć podobnego podejścia.
Jeśli uzyskujesz dostęp do Oracle przez ODBC, możesz użyć funkcji SQLTables .
W przeciwnym razie, jeśli potrzebujesz tylko informacji w SQLPlus lub podobnym kliencie Oracle, wystarczy jedno z wcześniej wymienionych zapytań. Na przykład:
źródło
pokaże wszystkie tabele w twoim schemacie cat synonim user_catalog
źródło
Powyższe zapytanie poda nazwy wszystkich tabel obecnych w tym użytkowniku;
źródło
(pokazuje wszystkie tabele)
źródło
SELECT nazwa_tabeli, właściciel Z wszystkich_tabli, gdzie właściciel = „nazwa_schematu” kolejność według nazwa_tabeli
źródło
Możesz bezpośrednio uruchomić drugie zapytanie, jeśli znasz nazwę właściciela.
- Najpierw możesz wybrać wszystkich istniejących WŁAŚCICIELI:
- Następnie możesz zobaczyć tabele pod tym właścicielem:
źródło
Spójrz na moje proste narzędzie, aby wyświetlić informacje o schemacie db. Opiera się na: Inżynierii odwrotnej modelu danych przy użyciu słownika danych Oracle
źródło
Jeśli chcesz również uzyskać rozmiar stołu, będzie to przydatne:
select SEGMENT_NAME, PARTITION_NAME, BYTES from user_segments where SEGMENT_TYPE='TABLE' order by 1
źródło
Nazwa tabeli i licznika wierszy dla wszystkich tabel w
OWNER
schemacie:SELECT table_name, num_rows counter from DBA_TABLES WHERE owner = 'OWNER'
źródło