Jak wyświetlić listę wszystkich tabel w schemacie w Oracle SQL?
Jak wyświetlić listę wszystkich tabel w schemacie w Oracle SQL?
Odpowiedzi:
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'
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.
SELECT table_name from all_tables where owner = 'YOURSCHEMA';
Możesz zapytać USER_TABLES
select TABLE_NAME from user_tables
Spróbuj tego, wymień? z nazwą schematu
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA =?
AND TABLE_TYPE = 'BASE TABLE'
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:
select TABLE_NAME from user_tables
select * from cat;
pokaże wszystkie tabele w twoim schemacie cat synonim user_catalog
Możesz bezpośrednio uruchomić drugie zapytanie, jeśli znasz nazwę właściciela.
- Najpierw możesz wybrać wszystkich istniejących WŁAŚCICIELI:
SELECT DISTINCT(owner) from SYS.ALL_TABLES;
- Następnie możesz zobaczyć tabele pod tym właścicielem:
SELECT table_name, owner from all_tables where owner like ('%XYZ%');
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
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
Nazwa tabeli i licznika wierszy dla wszystkich tabel w OWNER
schemacie:
SELECT table_name, num_rows counter from DBA_TABLES WHERE owner = 'OWNER'
%_OBJECTS
zamiast%_TABLES
.