Размер базы данных

Я
Дата: 15.03.2011 14:16:20
Подскажите скрипт вычисляющий сколько занимают на дисках имеющиеся tablespace (без archivelogs).
tru55
Дата: 15.03.2011 14:20:38
v$datafile
v$tempfile
v$logfile
omorozov
Дата: 15.03.2011 15:36:14
tru55,
Что-то типа
Select 
 al.tablespace_name,
 bytes_all,
 bytes_free, 
 ROUND(100*(1-bytes_free/bytes_all),1) per
From
(Select 
a.tablespace_name,
sum(ROUND(nvl(a.bytes,0)/1024/1024)) bytes_all
From dba_data_files a
Group by tablespace_name) al,
(Select 
d.tablespace_name,
sum(ROUND(nvl(d.bytes,0)/1024/1024)) bytes_free
From dba_free_space d
Group by tablespace_name) fr
Where al.tablespace_name=fr.tablespace_name
Order by 1
db_size
Дата: 15.03.2011 15:41:13
omorozov
tru55,
Что-то типа
Select 
 al.tablespace_name,
 bytes_all,
 bytes_free, 
 ROUND(100*(1-bytes_free/bytes_all),1) per
From
(Select 
a.tablespace_name,
sum(ROUND(nvl(a.bytes,0)/1024/1024)) bytes_all
From dba_data_files a
Group by tablespace_name) al,
(Select 
d.tablespace_name,
sum(ROUND(nvl(d.bytes,0)/1024/1024)) bytes_free
From dba_free_space d
Group by tablespace_name) fr
Where al.tablespace_name=fr.tablespace_name
Order by 1



Советую использовать именно v$datafile, так как в этом случае размер более точно определяется.
Значение берётся из контрольного файла и точно соответствует размеру файла данных на диске.

Были случаи когда dba_data_files не совпадал с v$datafile и с реальным размером файла данных в ОС.
omorozov
Дата: 15.03.2011 15:41:24
и вот еще
select 
    t.name tbs,
    ((sum(f.blocks)*t.blocksize)/1024)/1024 Mbytes
from 
    sys.ts$ t,
    sys.file$ f
where
    f.ts#=t.ts#
group by 
    t.name, t.blocksize
omorozov
Дата: 15.03.2011 15:43:17
db_size,

Да, человек не определил точно задачу, в граммах нужно, или просто оценить что чаще
comphead
Дата: 15.03.2011 16:19:16
Я
Подскажите скрипт вычисляющий сколько занимают на дисках имеющиеся tablespace (без archivelogs).


а если учитывать external tables?
Вячеслав Любомудров
Дата: 16.03.2011 03:59:33
db_size
Советую использовать именно v$datafile, так как в этом случае размер более точно определяется.
Значение берётся из контрольного файла и точно соответствует размеру файла данных на диске.
Тогда уж v$datafile_header
Там значение берется из заголовка самого файла данных :-)
А если еще учесть, что ни словарь (dba_data_files), ни контролфайл (v$datafile), ни заголовок файла (v$datafile_header) не учитывают нулевой блок файла, то про особую точность говорить не приходится :-)
db_size
Дата: 16.03.2011 10:12:47
Вячеслав Любомудров
db_size
Советую использовать именно v$datafile, так как в этом случае размер более точно определяется.
Значение берётся из контрольного файла и точно соответствует размеру файла данных на диске.
Тогда уж v$datafile_header
Там значение берется из заголовка самого файла данных :-)
А если еще учесть, что ни словарь (dba_data_files), ни контролфайл (v$datafile), ни заголовок файла (v$datafile_header) не учитывают нулевой блок файла, то про особую точность говорить не приходится :-)


Да хрен с ним с нулевым. Были случае когда разница между dba_data_files и v$datafile составляла гигабайты.
При этом именно размер в v$datafile соответствовал реальнмоу размеру файла в ОС.
dogmeat1982
Дата: 30.03.2012 14:46:31
omorozov, - благодарю за подробное разъяснение!
Правильно ли понимаю, что если PER близок к 100 или уже равен 100, но BYTES_FREE еще есть хотя бы пара мегабайт, то ORACLE вскоре самостоятельно расширит размер этого файла или он остановит экземпляр с ошибкой? Понимаю, что вопрос ламерский, но он соответствует опыту автора работы с СУБД ORACLE. Буду признателен за ответ.