今天巡检数据库,浏览监控的时候,发现上周四下午7点数据库segments合计大小在短时间直接飙升10GB,然后通过监控查看这个库的表空间变化情况,定位到对应的业务,这是新上的业务,数据量不可能以下彪这么多,进入用户,观察是否有特别大的表

select segment_name,bytes/1024/1024 MB from users_segments order by MB;

没有发现特别大的表,但是发现表数量特别多,达到1200个,每个表大小10MB,原因找到了,上周四升级,虽然业务量不大,但是新建的表量特别多,数据库参数deferred_segment_creation为FALSE

SQL> show parameter defer;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation boolean FALSE

还好当时数据库表空间都是预分配,而且分配的量足够大,这么短时间,10GB的量,都比得过某些业务1年的量了。
在测试环境创建了一个表,空间没有占到10MB,原因也明显,生产环境字段多,能达到二三十个,测试环境创建的表就只有一两个字段,还有字段类型与表大小也有关系。