统计数据库的规模一般会从两个维度考虑,一个是真实的数据库对象所占的空间,另一个是物理磁盘需要占多少空间。
前者是逻辑对象的数据规模,后者是磁盘上实际的数据文件大小。逻辑对象是存在物理文件中的,文件提前分好了空间,文件内容会等待逻辑对象填满。比如提前分好了一个32GB的表空间,数据没存满前,文件大小不会变,但对象所占的空间是在增长的。
统计数据库数据量大小的 SQL 语句如下:
-- 对象大小
select sum(t.bytes)/1024/1024/1024/1024 TB
from dba_segments t;
-- 数据文件大小
select sum(t.bytes)/1024/1024/1024/1024 TB
from dba_data_files t;
如果需要统计每年的数据库的数据量的增长量,一种笨办法则是每年统计一次,将结果存下来,多年之后再将数据取出来进行分析。Oracle中并不会记录数据增长的历史,唯一一种可以近似得到数据增长历史的地方是v$datafile视图,dba_* 相关的数据字典都没有存时间。通过v$datafile统计的数据增长量如下:
SQL语句为:
SELECT trunc(t.creation_time, 'yyyy'),
round(SUM(t.bytes) 1024 / 1024 / 1024 / 1024, 2) tb
FROM v$datafile t
GROUP BY trunc(t.creation_time, 'yyyy')
ORDER BY 1;
这里有一个问题就是如果数据库的生命周期不完整了,比如经历过数据迁移、resetlog 导致归档日志不再连接,此时 v$datafile 中记录的数据文件创建时间已经被重置,之前的历史记录会丢失。此时数据库相当于重生了,之前的数据文件创建时间都被重置为数据库的第一次打开时间。比如上面的记录 2017 年以前的数据文件增长记录都无法考证了,原因是经历过 resetlog 打开数据库。
最后再对统计工作提一点想法:
往往我们一年到头了才想起来需要数据支撑做总结。比如一年开了多少次会,出了多少次差,做了多少次内部培训,熬了多少次夜,加了多少次班。这些统计工作如果在一开始就规划好并为此做好记录,那么随着时间的推移,自然而然在想要时就可以得到数据。相反等到需要统计时才想起去找证据,往往会发现我们缺少记录。
全文完。
如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。
文章转载自生有可恋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。