Нам нужно решить два способа, основанных на StorageEngine.
1. MMAP (): команда
: db.repairDatabase ()
ПРИМЕЧАНИЕ: repairDatabase требует свободного дискового пространства, равного размеру вашего текущего набора данных плюс 2 гигабайта. Если на томе, на котором хранится dbpath, недостаточно места, вы можете установить отдельный том и использовать его для ремонта. При установке отдельного тома для repairDatabase вы должны запустить repairDatabase из командной строки и использовать переключатель --repairpath, чтобы указать папку для хранения временных файлов восстановления. например: Представьте, что размер БД составляет 120 ГБ, (120 * 2) +2 = 242 ГБ. Требуется место на жестком диске.
другой способ, которым вы коллекционируете мудрый, команда: db.runCommand ({compact: 'collectionName '})
2. WiredTiger: он автоматически разрешил сам.
Чтобы увидеть все таблицы в другой схеме, вам необходимо иметь одну или несколько из следующих системных привилегий:
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'
Вы можете запросить USER_TABLES
select TABLE_NAME from user_tables
Если вы обращаетесь к Oracle с помощью JDBC (Java), вы можете использовать класс DatabaseMetadata . Если вы обращаетесь к Oracle с помощью ADO.NET, вы можете использовать аналогичный подход.
Если вы обращаетесь к Oracle через ODBC, вы можете использовать функцию SQLTables .
В противном случае, если вам просто нужна информация в SQLPlus или аналогичном клиенте Oracle, подойдет один из уже упомянутых запросов. Например:
select TABLE_NAME from user_tables
Взгляните на мою простую утилиту , чтобы показать некоторую информацию о схеме БД. Он основан на: Обратное проектирование модели данных с использованием словаря данных Oracle
SELECT table_name from all_tables where owner = 'YOURSCHEMA';
Попробовать, заменить? с именем вашей схемы
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA =?
AND TABLE_TYPE = 'BASE TABLE'