oracle分区相关操作

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}');

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值