SELECT owner, table_name
FROM dba_tables
Предполагается, что у вас есть доступ к представлению словаря данных DBA_TABLES
. Если у вас нет этих привилегий, но они нужны, вы можете запросить, чтобы администратор БД явно предоставил вам привилегии для этой таблицы, или чтобы администратор БД предоставил вам привилегию SELECT ANY DICTIONARY
или роль SELECT_CATALOG_ROLE
(любая из которых позволит вам запросить любую таблицу словаря данных). Конечно, вы можете захотеть исключить определенные схемы, такие как SYS
и SYSTEM
, которые содержат большое количество таблиц Oracle, которые вам, вероятно, не нужны.
В качестве альтернативы, если у вас нет доступа к DBA_TABLES
, вы можете просмотреть все таблицы, к которым у вашей учетной записи есть доступ, в представлении ALL_TABLES
:
SELECT owner, table_name
FROM all_tables
Хотя это может быть подмножество таблиц, доступных в базе данных (ALL_TABLES
показывает вам информацию для всех таблиц, к которым вашему пользователю предоставлен доступ).
Если вас интересуют только те таблицы, которыми вы владеете, а не те, к которым у вас есть доступ, вы можете использовать USER_TABLES
:
SELECT table_name
FROM user_tables
Поскольку USER_TABLES
содержит информацию только о тех таблицах, которыми вы владеете, у него нет столбца OWNER
- владельцем по определению является вы.
Oracle также имеет несколько устаревших представлений словаря данных - например, TAB
, DICT
, TABS
и CAT
- которые можно использовать. В целом, я бы не советовал использовать эти устаревшие представления, если только вам абсолютно не нужно перенести свои сценарии в Oracle 6. Oracle не изменяла эти представления в течение длительного времени, поэтому у них часто возникают проблемы с объектами более новых типов. Например, представления TAB
и CAT
показывают информацию о таблицах, которые находятся в корзине пользователя, в то время как представления [DBA|ALL|USER]_TABLES
отфильтровывают их. CAT
также отображает информацию о материализованных журналах просмотра с TABLE_TYPE
из «TABLE», что вряд ли будет тем, что вы действительно хотите. DICT
объединяет таблицы и синонимы и не сообщает вам, кому принадлежит объект.