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

Нам нужно решить два способа, основанных на StorageEngine.

1. MMAP (): команда

: db.repairDatabase ()

ПРИМЕЧАНИЕ: repairDatabase требует свободного дискового пространства, равного размеру вашего текущего набора данных плюс 2 гигабайта. Если на томе, на котором хранится dbpath, недостаточно места, вы можете установить отдельный том и использовать его для ремонта. При установке отдельного тома для repairDatabase вы должны запустить repairDatabase из командной строки и использовать переключатель --repairpath, чтобы указать папку для хранения временных файлов восстановления. например: Представьте, что размер БД составляет 120 ГБ, (120 * 2) +2 = 242 ГБ. Требуется место на жестком диске.

другой способ, которым вы коллекционируете мудрый, команда: db.runCommand ({compact: 'collectionName '})

2. WiredTiger: он автоматически разрешил сам.

142
задан benstpierre 11 February 2010 в 19:58
поделиться

6 ответов

Чтобы увидеть все таблицы в другой схеме, вам необходимо иметь одну или несколько из следующих системных привилегий:

SELECT ANY DICTIONARY
(SELECT | INSERT | UPDATE | DELETE) ANY TABLE

или большой молот, роль администратора базы данных.

Для любого из них вы можете выбрать:

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'
204
ответ дан 23 November 2019 в 22:25
поделиться

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

select TABLE_NAME from user_tables
13
ответ дан 23 November 2019 в 22:25
поделиться

Если вы обращаетесь к Oracle с помощью JDBC (Java), вы можете использовать класс DatabaseMetadata . Если вы обращаетесь к Oracle с помощью ADO.NET, вы можете использовать аналогичный подход.

Если вы обращаетесь к Oracle через ODBC, вы можете использовать функцию SQLTables .

В противном случае, если вам просто нужна информация в SQLPlus или аналогичном клиенте Oracle, подойдет один из уже упомянутых запросов. Например:

select TABLE_NAME from user_tables
2
ответ дан 23 November 2019 в 22:25
поделиться

Взгляните на мою простую утилиту , чтобы показать некоторую информацию о схеме БД. Он основан на: Обратное проектирование модели данных с использованием словаря данных Oracle

0
ответ дан 23 November 2019 в 22:25
поделиться
SELECT table_name  from all_tables where owner = 'YOURSCHEMA';
64
ответ дан 23 November 2019 в 22:25
поделиться

Попробовать, заменить? с именем вашей схемы

select TABLE_NAME from  INFORMATION_SCHEMA.TABLES
 WHERE TABLE_SCHEMA =?
  AND TABLE_TYPE = 'BASE TABLE'
3
ответ дан 23 November 2019 в 22:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: