Oracle篇—分区索引的重建和管理(第三篇,总共五篇)

☘️博主介绍 ☘️**:**

✨又是一天没白过,我是奈斯,DBA一名✨

✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面**✌**✌️

❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣️❣️❣️

好久不见,今天这篇文章作为分区表和分区索引管理的第三篇------分区索引的重建和管理。在前两篇文章中,分别介绍了分区表和分区索引的分类和管理。今天,将重点关注分区和子分区索引的失效重建。

分区索引在数据库中扮演着至关重要的角色,它们能够显著提高查询性能并优化存储管理。但是如果在对分区表进行truncate partition、drop partition或者其他操作时如果没有加上update indexes,那么就会导致分区索引失效,这时就要对分区索引进行重建。所以建议在对分区操作时都加上update indexes。

在重建索引的过程中,我们还需要考虑数据的可用性和一致性。这意味着在重建索引时,我们需要最小化对正常业务操作的影响,确保数据完整性和一致性。

总之,分区和子分区索引的失效重建是数据库管理中的一项重要任务。通过定期评估和调整索引结构,我们可以确保数据库的性能和效率,满足不断变化的数据和查询需求。

因为分区技术需要介绍的太多,那么我将分成五篇来进行介绍,以便大家因为篇幅过长而感到阅读疲惫。五篇的内容分别如下:

第一篇:分区表和分区索引的介绍和分类

第二篇:分区表的管理

第三篇:分区索引的重建和管理**(当前篇)**

第四篇:分区表和分区索引常用的检查语句

第五篇:普通表迁移到分区表


分区、子分区索引的失效重建的注意事项:

分区索引必须对每个分区重建,不能作为整体重建。如果将分区索引作为整体重建会报:ORA-14086: a partitioned index may not be rebuilt as a whole

分区索引使用的注意事项:

(1)OLTP(事务处理)系统中,全局索引和本地前缀索引因能减少分区探测的次数从而提供更好的性能。

(2)OLTP(事务处理)系统中,当有表分区或子分区维护操作的时候,本地索引提供更好有效性;非前缀分区索引对于历史数据库非常有用。

(3)DSS(数据仓库)系统中,本地非前缀索引能提高性能,原因是依据范围的并发查询(如BETWEEN)能够并发的扫描到到更多索引分区。历史表的索引尽可能采用本地索引,因此历史表上会有较规律的分宮删除操作,而采用本地索引能降低这类操作的影响。多列上的唯一索引必须是全局的。

重建索引相关语句:

alter的方式重建全局索引/本地索引:

SQL> alter index index_name rebuild subpartition/partition partition_name [online] [nologging] [tablespace tablespace_name] [parallel x];

rebuild online: 在线重建索引

修改表的方式重建索引:

alter table table_name modify subpartition/partition partition_name rebuild unusable local indexes;

案例一:table_r2为范围分区,使用全局hash索引。如果删除一个表分区,没有加update index会导致索引失效,所以进行重建 (建议加上update indexes就会自动维护索引)

1)table_r2为范围分区

sql 复制代码
SQL> select * from dba_part_tables where table_name='TABLE_R2';   

2)table_r2分了6个区

sql 复制代码
SQL> select * from DBA_tab_partitions where table_name='TABLE_R2'; 

3)table_r2表的索引为hash全局索引

sql 复制代码
SQL> select * from dba_part_indexes where table_name='TABLE_R2';

4)索引分了6个区

sql 复制代码
SQL> select * from dba_ind_partitions where index_name='I_TABLE_R2_ID'; 

5)业务需要删除一个表分区

sql 复制代码
SQL> alter table table_r2 drop partition p40000;     

6)导致所有的分区表全局索引全部失效

sql 复制代码
SQL> select * from dba_ind_partitions where index_name='I_TABLE_R2_ID';  

7)对分区表的索引进行重建 (分区索引必须对每个分区重建,不能作为整体重建)

sql 复制代码
SQL> alter  index  I_TABLE_R2_ID  rebuild  partition P10000 online ; 
SQL> alter  index  I_TABLE_R2_ID  rebuild  partition P20000 online ; 
SQL> alter  index  I_TABLE_R2_ID  rebuild  partition P30000 online ; 
SQL> alter  index  I_TABLE_R2_ID  rebuild  partition P40000 online ;
SQL> alter  index  I_TABLE_R2_ID  rebuild  partition P50000 online ;
SQL> alter  index  I_TABLE_R2_ID  rebuild  partition P_MAX  online ;

SQL> select * from dba_ind_partitions where index_name='I_TABLE_R2_ID'; 
相关推荐
摇滚侠10 小时前
全面掌握 PostgreSQL 关系型数据库,PostgreSQL 介绍,笔记02
数据库·笔记·postgresql
百锦再10 小时前
国产数据库替代MongoDB的技术实践:金仓数据库赋能浙江省人民医院信息化建设新展望
java·开发语言·数据库·mongodb·架构·eclipse·maven
程序边界10 小时前
MongoDB迁移到KES实战全纪录(下):性能优化与实践总结
数据库·mongodb·性能优化
武子康10 小时前
Java-160 MongoDB副本集部署实战 单机三实例/多机同法 10 分钟起集群 + 选举/读写/回滚全流程
java·数据库·sql·mongodb·性能优化·系统架构·nosql
这儿有一堆花10 小时前
使用 Actix-web 开发高性能 Web 服务
前端·数据库
与衫11 小时前
SQL 调试不再靠猜:Gudu SQL Omni 让血缘分析一键可视化
数据库·sql
强里秋千墙外道11 小时前
【Linux】ssh升级到最新版本-以ubuntu为例
linux·运维·ssh
先做个垃圾出来………11 小时前
Docker容器部署方法
运维·docker·容器
minhuan11 小时前
构建AI智能体:七十五、用扣子平台创建工作流:从自动化到智能化的进阶之路
运维·自动化·工作流构建·意图识别工作流
ZZZKKKRTSAE11 小时前
MySQL一篇速通
数据库·mysql·1024程序员节