晚上收告警短信,pm4h_db0 表空间使用率超过了85%
TABLESPACE MAX_G USED_G PERCENT_USED
PM4H_DB9 416 154.8 37.21
PM4H_DB8 416 244.94 58.88
PM4H_DB7 416 246.74 59.31
PM4H_DB6 416 188.58 45.33
PM4H_DB5 416 220.55 53.02
PM4H_DB4 416 229.22 55.1
PM4H_DB3 416 174.39 41.92
PM4H_DB2 416 63.3 15.22
PM4H_DB1 512 187.93 36.71
PM4H_DB0 512 440.16 87.68
PM4H_DB_INDEX9 320 102.98 32.18
PM4H_DB_INDEX8 320 118.96 37.18
PM4H_DB_INDEX7 320 133.8 41.81
PM4H_DB_INDEX6 320 158.94 49.67
PM4H_DB_INDEX5 320 134.29 41.97
PM4H_DB_INDEX4 352 135.45 38.48
PM4H_DB_INDEX3 352 107.34 30.49
PM4H_DB_INDEX2 352 89.82 25.52
PM4H_DB_INDEX1 512 159.13 31.08
PM4H_DB_INDEX0 512 134.17 26.21
什么原因使的表空间分布的如此不均匀呢,在awr 报告上也看到读写
差别很大pm4h_db0 使用了440G之多,其它的表空间却只有200G左右
系统设计对各个表的分区也做了平衡,不会差这么多呀
联想到最近做了那些个操作呢,上个月做大了50张大表的分区操作,这些分区表的尺寸
占到了整个数据库的65%还多,会不会是这个操作引起的呢
select tablespace_name,count(*) from user_tab_partitions group by tablespace_name;
TABLESPACE_NAME COUNT(*)
PM4H_DB0 1809
PM4H_DB4 6
PM4H_DB8 8
PM4H_DB2 2
PM4H_DB7 5
PM4H_DB1 5
PM4H_DB3 5
PM4H_DB5 6
PM4H_DB9 5
PM4H_DB6 4
大量的分区都落在了用户默认表空间里了。这些个分区是由一个脚本根据时间的自动流逝创建的。
由于在add partition 时没有指定表空间,所以都创建在用户默认表空间里了。
原因找到了。处理方法自然有两个,一修改创建分区的脚本增加tablespace 参数。
另一个是通过给这些分区表修改defalut 表空间。
alter table BH_TODBH_10253 modify DEFAULT ATTRIBUTES tablespace pm4h_db1;
alter table IND_TOH_14659 modify DEFAULT ATTRIBUTES tablespace pm4h_db9;
..
...
...
..
...
alter table IND_TOH_19666_4 modify DEFAULT ATTRIBUTES tablespace pm4h_db7;
alter table IND_TOH_21446 modify DEFAULT ATTRIBUTES tablespace pm4h_db8;
一天后,观察分区情况
select a.tablespace_name,count(*) from user_tab_partitions a group by a.tablespace_name;
TABLESPACE_NAME COUNT(*)
PM4H_DB0 1809
PM4H_DB1 10
PM4H_DB2 8
PM4H_DB3 11
PM4H_DB4 11
PM4H_DB5 11
PM4H_DB6 10
PM4H_DB7 11
PM4H_DB8 14
PM4H_DB9 10
观察,表分区开始在其它的表空间上开始建立
-----the end---