Как перечислить все таблицы в схеме в Oracle SQL?
13 ответов
чтобы просмотреть все таблицы в другой схеме, необходимо иметь одно или несколько из следующих системных привилегий:
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'
Если вы вошли в систему как обычный пользователь без разрешения DBA, вы можете использовать следующую команду для просмотра всех таблиц и представлений вашей собственной схемы.
select * from tab;
попробуйте это заменить ? с вашим именем-схемы
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA =?
AND TABLE_TYPE = 'BASE TABLE'
Если вы обращаетесь к Oracle с JDBC (Java), вы можете использовать DatabaseMetadata класса. Если вы обращаетесь к Oracle с помощью ADO.NET вы можете использовать аналогичный подход.
Если вы обращаетесь к Oracle с ODBC, вы можете использовать функции sqltables.
в противном случае, если вам просто нужна информация в sqlplus или аналогичном клиенте Oracle, подойдет один из уже упомянутых запросов. Например:
select TABLE_NAME from user_tables
посмотрите на мой программа чтобы показать некоторую информацию о схеме db. Он основан на: обратное проектирование модели данных Использование словаря данных Oracle
select TABLE_NAME from user_tables;
выше запрос даст вам имена всех таблиц, присутствующих в этом пользователе;
Если вам нужно получить размер стола, а также, это будет удобно:
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'