【导读】本文分享了在进行split partition操作的时候造成的大量enq:TM-contention争用,导致数据库发生严重阻塞及性能的问题及其解决。
一、前言
我们都知道当分区存在maxvalue的分区时候,是无法通过alter table add partition的方式来增加分区的。Oracle推荐的方式则是alter table split partition从maxvalue的分区中进行拆分,但是血的教训告诉却我们通过split partition的方式拆,如果使用时机不正确的时,则可能会给我们带来极大的风险。这次为大家分享的则是在进行split partition操作的时候造成的大量enq:TM-contention争用,导致数据库发生严重阻塞及性能的问题。
二、split partition拆分分区的几种情况
Split partition拆分分区的命令如下(以拆分p_max分区为例):
alter table &table_name split partition p_max at ('2023-03-01') into (partition p_20230201, partition p_max) update indexes;
注:此处加入update indexes主要是为了防止表上的全局唯一索引失效。
而根据p_max分区是否存在数据,又可将上述的split partition操作划分为三种情况: