Oracle получить список таблиц

Как запросить базу данных Oracle, чтобы отобразить имена всех таблиц в ней?

Это предполагает, что у вас есть доступ к представлению DBA_TABLES данных DBA_TABLES . Если у вас нет этих привилегий, но они вам нужны, вы можете запросить, чтобы администратор БД явно предоставил вам привилегии для этой таблицы, или чтобы администратор SELECT ANY DICTIONARY предоставил вам привилегию SELECT ANY DICTIONARY или роль SELECT_CATALOG_ROLE (любую из которых можно было бы запросить). любая таблица словаря данных). Конечно, вы можете захотеть исключить определенные схемы, такие как SYS и SYSTEM которые имеют большое количество таблиц Oracle, которые вам, вероятно, не нужны.

Кроме того, если у вас нет доступа к DBA_TABLES , вы можете просмотреть все таблицы, к которым у вашей учетной записи есть доступ, через представление ALL_TABLES :

Хотя это может быть подмножеством таблиц, доступных в базе данных ( ALL_TABLES показывает вам информацию для всех таблиц, к которым вашему пользователю предоставлен доступ).

Если вас интересуют только те таблицы, которыми вы владеете, а не те, к которым у вас есть доступ, вы можете использовать USER_TABLES :

Поскольку USER_TABLES содержит информацию только о тех таблицах, которыми вы владеете, у него нет столбца OWNER — владельцем по определению является вы.

У Oracle также есть несколько устаревших представлений словаря данных — например, TAB , DICT , TABS и CAT которые можно использовать. В общем, я бы не советовал использовать эти устаревшие представления, если вам абсолютно не нужно перенести свои сценарии в Oracle 6. Oracle не изменяла эти представления в течение длительного времени, поэтому у них часто возникают проблемы с объектами более новых типов. Например, оба представления TAB и CAT показывают информацию о таблицах, которые находятся в [DBA|ALL|USER]_TABLES пользователя, в то время как все представления [DBA|ALL|USER]_TABLES отфильтровывают их. CAT также показывает информацию о материализованных журналах представления с TABLE_TYPE «TABLE», что вряд ли будет тем, что вы действительно хотите. DICT объединяет таблицы и синонимы и не говорит вам, кто владеет объектом.

Читайте также:  Nokia 220 драйвер для windows

862 vitule [2008-10-15 20:54:00]

Как я могу запросить базу данных Oracle для отображения имен всех таблиц в ней?

18 ответов

1083 Решение Justin Cave [2008-10-15 20:56:00]

Предполагается, что у вас есть доступ к представлению словаря данных DBA_TABLES . Если у вас нет этих привилегий, но они нуждаются в них, вы можете запросить, чтобы администратор базы данных явно предоставлял вам привилегии в этой таблице или что администратор базы данных предоставляет вам привилегию SELECT ANY DICTIONARY или SELECT_CATALOG_ROLE (любой из которых позволит вам для запроса любой таблицы словаря данных). Конечно, вы можете исключить некоторые схемы, такие как SYS и SYSTEM , которые имеют большое количество таблиц Oracle, которые вам, вероятно, не волнует.

В качестве альтернативы, если у вас нет доступа к DBA_TABLES , вы можете увидеть все таблицы, к которым ваша учетная запись имеет доступ, через представление ALL_TABLES :

Хотя это может быть подмножество таблиц, доступных в базе данных ( ALL_TABLES показывает вам информацию для всех таблиц, которым был предоставлен ваш пользователь).

Если вас интересуют только те таблицы, которые у вас есть, а не те, к которым у вас есть доступ, вы можете использовать USER_TABLES :

Так как USER_TABLES имеет только информацию о собственных таблицах, у нее нет столбца OWNER — владелец, по определению, вы.

Oracle также имеет ряд устаревших видов словарей данных — TAB , DICT , TABS и CAT например — которые могут быть использованы. В общем, я бы не предложил использовать эти устаревшие представления, если вам не нужно полностью использовать ваши сценарии для Oracle 6. Oracle не изменил эти представления за долгое время, поэтому у них часто возникают проблемы с новыми типами объектов. Например, представления TAB и CAT отображают информацию о таблицах, которые находятся в корзине пользователя, в то время как теги [DBA|ALL|USER]_TABLES все фильтруют их. CAT также показывает информацию о материализованных журналах просмотра с TABLE_TYPE в таблице "ТАБЛИЦА", которая вряд ли будет тем, что вы действительно хотите. DICT объединяет таблицы и синонимы и не говорит вам, кому принадлежит этот объект.

Читайте также:  Learning unity android game development thomas finnegan

137 vitule [2008-10-15 21:12:00]

Запрос user_tables и dba_tables не работает.
Это сделал:

Идет подключение к базе данных. Схема заранее неизвестна. Как узнать, какие в базе есть таблицы?

2 ответа 2

Выполнить запрос "select * from ALL_TABLES" и осмыслить результаты

Таблица и название схемы:

select table_name, tablespace_name from ALL_TABLES;

Или можешь вывести все необходимые поля. Узнать их можно:

а что в них записано можно понять по названию этих полей.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками oracle sql или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.1.16.35797

Rate this post

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *