1、查询指定表分区:
select table_name,partition_name,high_value,tablespace_name from user_tab_partitions where table_name='$TABLE_NAME';
2、分区切分,之前存在被切分分区的中的数据,如果符合条件(less than的值),会被切分到新的分区中
alter table $TABLE_NAME split partition ${MAXVALUE分区} at(${新分区high_value值}) into (partition ${新分区名字}),partition ${MAXVALUE分区});
注:其中at中的值是新分区的less than值,即high_value值,上例是切分最大分区的例子
3、删除分区
alter table $TABLE_NAME drop partition ${partition_name};
4、查询分区表索引
select index_name from user_indexes where TABLE_NAME='$TABLE_NAME' and index_name not like 'SYS_%' and PARTITIONED='YES';
5、rebuild分区表索引(split分区后,需要对原分区进行rebuild索引)
alter index ${index_name} rebuild partition ${partition_name};
6、dbms收集分析数据(用于优化sql执行方案)
exec dbms_stats.gather_table_stats(ownname=>${USER_NAME}',tablename=>'${TABLE_NAME}',partition=>'${PARTITION_NAME}',method_opt=>'FOR COLUMNS SIZE REPEAT',cascade=>true,granularity=>'PARTITION');
注:可以在最后加上force=>true进行强制执行(这样可以解决被锁住的问题)
7、dbms_stats解锁(sqlplus中执行)
exec dbms_stats.unlock_table_stats('${USER_NAME}');
exec dbms_stats.unlock_table_stats('${USER_NAME}','${TABLE_NAME}');
exec dbms_stats.unlock_partition_stats('${USER_NAME}','${TABLE_NAME}','${PARTITION_NAME}');