Назад | Перейти на главную страницу

База данных Oracle внезапно заполняет устройство хранения примерно за 20 минут

Мой экземпляр Oracle, установленный на RDS Amazon, заполнил хранилище объемом 20 ГБ примерно за 20 минут. Я проверил все приложения, использующие эту БД, и ничего необычного - я не могу понять, почему это могло произойти.

Смотрите график от CloudWatch:

Как видите, я увеличил объем хранилища до 25 ГБ в надежде, что смогу «что-нибудь встряхнуть», но, очевидно, все, что он сделал, это увеличил свободное пространство на 5 ГБ.

Этот экземпляр запускает веб-приложение с очень низким трафиком, и вы можете видеть, что свободное пространство очень стабильно при использовании. 20 ГБ должно быть более чем достаточно для этой системы. В чем дело?

Какие-нибудь советы, как я могу выяснить, что занимает все пространство?

Редактировать: Некоторая статистика, которую мне удалось получить из БД:

SELECT 
( SELECT SUM(BYTES)/1024/1024/1024 DATA_SIZE FROM DBA_DATA_FILES ) +
( SELECT NVL(SUM(BYTES),0)/1024/1024/1024 TEMP_SIZE FROM DBA_TEMP_FILES ) +
( SELECT SUM(BYTES)/1024/1024/1024 REDO_SIZE FROM SYS.V_$LOG ) +
( SELECT SUM(BLOCK_SIZE*FILE_SIZE_BLKS)/1024/1024/1024 CONTROLFILE_SIZE FROM V$CONTROLFILE) "Size in GB"
FROM
DUAL;

Производит:

Size in GB
------------------
19.360321044921875

И, используя процесс исключения, я понял, что это DBA_TEMP_FILES это занимает 18 из 19 ГБ.

Что в DBA_TEMP_FILES? Как мне их очистить?

Хорошо, я изменил размер своего табличного пространства TEMP и, похоже, решил мою проблему.

Вот команда, которую я выполнил:

ALTER TABLESPACE TEMP SHRINK SPACE KEEP 512M;

Кажется, проблема устранилась (размер БД увеличился с 19 ГБ до 2 ГБ), но я все еще не понимаю, почему это могло произойти в такой маленькой среде.

Добавлены некоторые будильники CloudWatch, чтобы в следующий раз я мог воспользоваться этим заранее (если будет в следующий раз).