Результаты запросов Oracle не соответствуют значениям Enterprise Manager

Я пытаюсь получить размер всех табличных пространств в базе данных Oracle. Я пробовал 2 способа получения информации.

Вариант 1 дает мне хорошие значения, но не возвращает никаких значений, если у табличного пространства нет файла базы данных. В частности, он не возвращает никаких значений для табличных пространств TEMP и TESTTODELETE.

Единственные различия, которые я заметил между этими двумя табличными пространствами и другими, состоят в том, что у этих двух нет файлов.dbf.

Вариант 2 дает мне правильные значения для некоторых табличных пространств, но полностью отключен в других случаях. Вариант 2 возвращает что-то для табличного пространства "TEMP", но ничего не возвращает для табличного пространства "TESTTODELETE".

Обе опции не возвращают никакой информации для табличного пространства "TESTTODELETE".

Каков наилучший способ получить общий размер табличного пространства в МБ для всех табличных пространств, чтобы он отражал то, что отображается в Enterprise Manager?

1 ответ

Решение

dba_data_files содержит только это, табличные пространства, которые имеют файлы данных. Если вам нужно включить табличные пространства, которые не поддерживаются файлами данных (например, временные табличные пространства), вам необходимо включить dba_temp_files в вашем запросе. Они имеют почти одинаковую структуру столбцов, поэтому их должно быть легко UNION их вместе.

Что касается dba_tablespace_usage_metrics емкость, которую он сообщает, является максимальным размером табличного пространства. Если для табличного пространства включено автоматическое расширение, оно будет включено в расчет. Кроме того, я не рекомендую полагаться на v$parameters определить размер блока. Вместо этого присоединяйтесь к dba_tablespaces потому что каждое табличное пространство может иметь свой собственный размер блока.

Другие вопросы по тегам