Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Очистка БД  [new]
Zioma
Member

Откуда: Украина, Киев
Сообщений: 361
Доброго времени суток.
В Оракле мало чего смыслю (работаю с sql server), но необходимо разобраться с одной проблемой.
Поэтому прошу помощи.

Суть такова: есть бд, общий объем файлов - овер 400Гб. Но даных там не может быть так много.
Что я нашел:
select * from dba_data_files

есть более десятка файлов по 32 Гб, все пренадлежат одному tablespace. Пример:
+

FILE_NAME FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS RELATIVE_FNO AUTOEXTENSIBLE MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ONLINE_STATUS
/data/CISM_7.dbf 58 CISCM 33285996544 4063232 AVAILABLE 58 YES 33285996544 4063232 262144 33285865472 4063216 ONLINE
/data/CISM_6.dbf 57 CISCM 33285996544 4063232 AVAILABLE 57 YES 33285996544 4063232 262144 33285865472 4063216 ONLINE
/data/CISM_5.dbf 56 CISCM 33554432000 4096000 AVAILABLE 56 YES 33554432000 4096000 262144 33554300928 4095984 ONLINE
/data/CISM_4.dbf 55 CISCM 33504100352 4089856 AVAILABLE 55 YES 33554432000 4096000 1280 33503969280 4089840 ONLINE


Если выполнить
select sum(round((num_rows*avg_row_len)/(1024*1024))) MB 
from all_tables 
where TABLESPACE_NAME = 'CISCM'


то объем таблиц составляет 3,6 Гб.

Как определить, что занимает столько места (около 300 Гб) ?
7 апр 15, 14:36    [17483703]     Ответить | Цитировать Сообщить модератору
 Re: Очистка БД  [new]
dba segments & free space
Guest
Zioma,

а довериться гуям типа ЕМ или склдевелопер пробовал?
7 апр 15, 14:47    [17483768]     Ответить | Цитировать Сообщить модератору
 Re: Очистка БД  [new]
Zioma
Member

Откуда: Украина, Киев
Сообщений: 361
dba segments & free space,

Та да, юзаю dbForge Studio
Но там ничего вроде не нашел для таких целей.
7 апр 15, 14:51    [17483785]     Ответить | Цитировать Сообщить модератору
 Re: Очистка БД  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
Zioma
Если выполнить
select sum(round((num_rows*avg_row_len)/(1024*1024))) MB 
from all_tables 
where TABLESPACE_NAME = 'CISCM'

то объем таблиц составляет 3,6 Гб.
Как определить, что занимает столько места (около 300 Гб) ?

замени в запросе all_tables на dba_tables - изменился ли результат?
7 апр 15, 15:46    [17484090]     Ответить | Цитировать Сообщить модератору
 Re: Очистка БД  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Не говоря уж о том, что данные статистики, в частности num_rows м.б. уже не актуальны
7 апр 15, 15:57    [17484142]     Ответить | Цитировать Сообщить модератору
 Re: Очистка БД  [new]
типа специалист
Guest
Zioma,
могу предположить, что место занято либо при создании файлов ТП (create tablespace ... add datafile ... size 32G),
либо файлы выросли в процессе жизнедеятельности БД.

попробуй попробовать alter database datafile ... resize <сильно меньше 32G>
7 апр 15, 17:16    [17484641]     Ответить | Цитировать Сообщить модератору
 Re: Очистка БД  [new]
Zioma
Member

Откуда: Украина, Киев
Сообщений: 361
Viewer
замени в запросе all_tables на dba_tables - изменился ли результат?

Цифра не изменилась
7 апр 15, 17:58    [17484841]     Ответить | Цитировать Сообщить модератору
 Re: Очистка БД  [new]
Zioma
Member

Откуда: Украина, Киев
Сообщений: 361
типа специалист
Zioma,
могу предположить, что место занято либо при создании файлов ТП (create tablespace ... add datafile ... size 32G),
либо файлы выросли в процессе жизнедеятельности БД.

попробуй попробовать alter database datafile ... resize <сильно меньше 32G>


Тут два вопроса:
1. alter database datafile ... resize как отразится на работе сервера/бд ? Например, в сиквеле шринк (ресайз) файла данных в 32 Гб, если он заполнен данными, может занять не один час.
2. следовательно второй вопрос - как можно посмотреть, что именно находится в конкретном файле?
7 апр 15, 18:04    [17484861]     Ответить | Цитировать Сообщить модератору
 Re: Очистка БД  [new]
типа специалист
Guest
Zioma,
alter ... resize ... отразится на работе сервера легко.
Но только если нет занятых экстентов после отметки, до которой ресайзится файл.

DBA_EXTENTS покажет максимальный номер блока в файле и каким объектом он занят (TABLE/INDEX/LOB),
тогда можно сделать ALTER TABLE ... MOVE (ALTER INDEX ... REBUILD) в другое табличное пространство (на время), сократить файл, и заново вернуть объект в ТП.
Ну в общем, целое дело. Уменьшить базу на 300Гб наверно оно того стоит.
7 апр 15, 18:22    [17484931]     Ответить | Цитировать Сообщить модератору
 Re: Очистка БД  [new]
Melkomyagkii_newbi
Member

Откуда: из прошлого
Сообщений: 1859
Zioma
Viewer
замени в запросе all_tables на dba_tables - изменился ли результат?

Цифра не изменилась


А такой запрос что показывает

select tablespace_name, sum(bytes/(1024*1024)) TotalMB
from dba_segments
group by tablespace_name;


Или просто сумма без группировки.
7 апр 15, 19:23    [17485072]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить