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

2024-01-27 07:36

本文主要是介绍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> select * from dba_part_tables where table_name='TABLE_R2';   

 2)table_r2分了6个区

SQL> select * from DBA_tab_partitions where table_name='TABLE_R2'; 

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

SQL> select * from dba_part_indexes where table_name='TABLE_R2';

4)索引分了6个区

SQL> select * from dba_ind_partitions where index_name='I_TABLE_R2_ID'; 

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

SQL> alter table table_r2 drop partition p40000;     

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

SQL> select * from dba_ind_partitions where index_name='I_TABLE_R2_ID';  

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

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

这篇关于Oracle篇—分区索引的重建和管理(第三篇,总共五篇)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/649511

相关文章

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

MySQL逻辑删除与唯一索引冲突解决方案

《MySQL逻辑删除与唯一索引冲突解决方案》本文探讨MySQL逻辑删除与唯一索引冲突问题,提出四种解决方案:复合索引+时间戳、修改唯一字段、历史表、业务层校验,推荐方案1和方案3,适用于不同场景,感兴... 目录问题背景问题复现解决方案解决方案1.复合唯一索引 + 时间戳删除字段解决方案2:删除后修改唯一字

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

浅谈mysql的not exists走不走索引

《浅谈mysql的notexists走不走索引》在MySQL中,​NOTEXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引,下面就来介绍一下mysql的notexists走不走索... 在mysql中,​NOT EXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引。以下

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

MySQL 定时新增分区的实现示例

《MySQL定时新增分区的实现示例》本文主要介绍了通过存储过程和定时任务实现MySQL分区的自动创建,解决大数据量下手动维护的繁琐问题,具有一定的参考价值,感兴趣的可以了解一下... mysql创建好分区之后,有时候会需要自动创建分区。比如,一些表数据量非常大,有些数据是热点数据,按照日期分区MululbU