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