Как мне перечислить все таблицы в схеме в Oracle SQL?
159
Чтобы увидеть все таблицы в другой схеме, вам необходимо иметь одну или несколько из следующих системных привилегий:
SELECT ANY DICTIONARY
(SELECT | INSERT | UPDATE | DELETE) ANY TABLE
или большой молот, роль DBA.
С любым из них вы можете выбрать:
SELECT DISTINCT OWNER, OBJECT_NAME
FROM DBA_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Без этих системных привилегий вы можете видеть только таблицы, к которым вам предоставлен определенный уровень доступа, напрямую или через роль.
SELECT DISTINCT OWNER, OBJECT_NAME
FROM ALL_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Наконец, вы всегда можете запросить словарь данных для ваших собственных таблиц, так как ваши права на ваши таблицы не могут быть отозваны (начиная с 10g):
SELECT DISTINCT OBJECT_NAME
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
%_OBJECTS
вместо%_TABLES
.DISTINCT
запросе нет абсолютно никакой необходимости .owner, object_name
является уникальным вALL_OBJECTS
owner, object_name
не является уникальным в dba_objects; В этом представлении отображаются тела пакета и пакеты, а таблицы и индексы находятся в разных пространствах имен.источник
Вы можете запросить
USER_TABLES
источник
Если вы вошли в систему как обычный пользователь без прав администратора, вы можете использовать следующую команду для просмотра всех таблиц и представлений своей схемы.
источник
Попробуйте это заменить? с вашим именем схемы
источник
Если вы обращаетесь к Oracle через JDBC (Java), вы можете использовать класс DatabaseMetadata . Если вы обращаетесь к Oracle через ADO.NET, вы можете использовать аналогичный подход.
Если вы обращаетесь к Oracle через ODBC, вы можете использовать функцию SQLTables .
В противном случае, если вам просто нужна информация в SQLPlus или аналогичном клиенте Oracle, подойдет один из уже упомянутых запросов. Например:
источник
он покажет все таблицы в вашей схеме cat синоним user_catalog
источник
Выше запрос даст вам имена всех таблиц, представленных в этом пользователе;
источник
(показаны все таблицы)
источник
ВЫБРАТЬ имя_таблицы, владелец FROM all_tables, где владелец = 'имя_схемы' упорядочено по имени_таблицы
источник
Вы можете напрямую запустить второй запрос, если знаете имя владельца.
- Во-первых, вы можете выбрать, какие существуют все ВЛАДЕЛЬЦЫ:
- Затем вы можете увидеть таблицы под этим владельцем:
источник
Посмотрите на мою простую утилиту, чтобы показать некоторую информацию о схеме БД. Он основан на: обратном проектировании модели данных с использованием словаря данных Oracle
источник
Если вам также нужно получить размер таблицы, это будет удобно:
select SEGMENT_NAME, PARTITION_NAME, BYTES from user_segments where SEGMENT_TYPE='TABLE' order by 1
источник
Имя таблицы и счетчик строк для всех таблиц в
OWNER
схеме:SELECT table_name, num_rows counter from DBA_TABLES WHERE owner = 'OWNER'
источник