Как перечислить все таблицы в схеме в Oracle SQL?

Как перечислить все таблицы в схеме в 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'

SELECT table_name  from all_tables where owner = 'YOURSCHEMA';

Вы можете сделать запрос USER_TABLES

select TABLE_NAME from user_tables

Если вы вошли в систему как обычный пользователь без разрешения 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

select * from user_tables;

(показать все таблицы)


select * from cat;

он покажет все таблицы в вашей схеме Cat синоним user_catalog


выберите table_name, owner из all_tables, где owner=' schema_name ' порядок по table_name


посмотрите на мой программа чтобы показать некоторую информацию о схеме 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'