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

相关文章

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java

基于Python+PyQt5打造一个跨平台Emoji表情管理神器

《基于Python+PyQt5打造一个跨平台Emoji表情管理神器》在当今数字化社交时代,Emoji已成为全球通用的视觉语言,本文主要为大家详细介绍了如何使用Python和PyQt5开发一个功能全面的... 目录概述功能特性1. 全量Emoji集合2. 智能搜索系统3. 高效交互设计4. 现代化UI展示效果

MySQL 添加索引5种方式示例详解(实用sql代码)

《MySQL添加索引5种方式示例详解(实用sql代码)》在MySQL数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中,下面给大家分享MySQL添加索引5种方式示例详解(实用sql代码),... 在mysql数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中。索引可以在创建表时定义,也可

Mysql中的用户管理实践

《Mysql中的用户管理实践》:本文主要介绍Mysql中的用户管理实践,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录13. 用户管理13.1 用户 13.1.1 用户信息 13.1.2 创建用户 13.1.3 删除用户 13.1.4 修改用户

MySQL数据库实现批量表分区完整示例

《MySQL数据库实现批量表分区完整示例》通俗地讲表分区是将一大表,根据条件分割成若干个小表,:本文主要介绍MySQL数据库实现批量表分区的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录一、表分区条件二、常规表和分区表的区别三、表分区的创建四、将既有表转换分区表脚本五、批量转换表为分区

linux服务之NIS账户管理服务方式

《linux服务之NIS账户管理服务方式》:本文主要介绍linux服务之NIS账户管理服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、所需要的软件二、服务器配置1、安装 NIS 服务2、设定 NIS 的域名 (NIS domain name)3、修改主

Oracle 通过 ROWID 批量更新表的方法

《Oracle通过ROWID批量更新表的方法》在Oracle数据库中,使用ROWID进行批量更新是一种高效的更新方法,因为它直接定位到物理行位置,避免了通过索引查找的开销,下面给大家介绍Orac... 目录oracle 通过 ROWID 批量更新表ROWID 基本概念性能优化建议性能UoTrFPH优化建议注

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序

MySQL索引失效问题及解决方案

《MySQL索引失效问题及解决方案》:本文主要介绍MySQL索引失效问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql索引失效一、概要二、常见的导致MpythonySQL索引失效的原因三、如何诊断MySQL索引失效四、如何解决MySQL索引失