千家信息网

oracle分区索引的失效和重建代码示例

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,上一篇文章中我们了解了oracle普通表转化为分区表的方法的相关内容,接下来的这篇文章,我们将探讨oracle分区索引的失效和重建问题,提供了相关代码示例供大家参考,具体如下。--创建测试表SQL>
千家信息网最后更新 2024年11月11日oracle分区索引的失效和重建代码示例

上一篇文章中我们了解了oracle普通表转化为分区表的方法的相关内容,接下来的这篇文章,我们将探讨oracle分区索引的失效和重建问题,提供了相关代码示例供大家参考,具体如下。

--创建测试表SQL> create table t as select object_id,object_name from dba_objects;

表已创建。

SQL> select min(object_id),max(object_id) from t;MIN(OBJECT_ID) MAX(OBJECT_ID)-------------- --------------       2     76083SQL> create table t_part(object_id int,object_name varchar2(1000)) partition by range(object_id) 2 ( 3 partition p1 values less than (10000), 4 partition p2 values less than (20000), 5 partition p3 values less than (30000), 6 partition p4 values less than (40000), 7 partition pm values less than (maxvalue));

表已创建。

SQL> insert into t_part select * from t;

已创建72663行。

SQL> commit;--创建本地分区索引SQL> create index idx_part_local on t_part(object_name) local;

索引已创建。
创建全局非分区索引

SQL> create index idx_part_global on t_part(object_id) global;

索引已创建。
删除其中一个分区

SQL> alter table t_part drop partition p1;

表已更改。
全局非分区索引失效,本地分区索引没有失效

SQL> select status,index_name from user_indexes s where index_name='IDX_PART_GLOBAL';STATUS  INDEX_NAME-------- ------------------------------UNUSABLE IDX_PART_GLOBALSQL> select status,index_name from user_ind_partitions s where index_name='IDX_PART_LOCAL';STATUS  INDEX_NAME-------- ------------------------------USABLE  IDX_PART_LOCALUSABLE  IDX_PART_LOCALUSABLE  IDX_PART_LOCALUSABLE  IDX_PART_LOCAL--重建失效索引SQL> alter index idx_part_global rebuild;

索引已更改。

在删除表分区的时候,可以通过以下命令进行索引重建

alter table t_part drop partition p2 update indexes;
创建全局分区索引

SQL> drop index idx_part_global;

索引已删除。

SQL> CREATE INDEX idx_part_global_full ON t_part (object_id) 2   GLOBAL PARTITION BY RANGE (object_id) 3    (PARTITION p1 VALUES LESS THAN (10000), 4     PARTITION p2 VALUES LESS THAN (30000), 5     PARTITION p3 VALUES LESS THAN (MAXVALUE));

索引已创建。

--删除其中一个分区SQL> alter table t_part drop partition p3;

表已更改。

--全局分区索引失效SQL> select status,index_name from user_ind_partitions s where index_name='IDX_PART_GLOBAL_FULL';STATUS  INDEX_NAME-------- ------------------------------UNUSABLE IDX_PART_GLOBAL_FULLUNUSABLE IDX_PART_GLOBAL_FULLUNUSABLE IDX_PART_GLOBAL_FULLSQL> select /*+index(t IDX_PART_LOCAL)*/ * from t_part t where object_name = '/7f6c264c_IIOPAddress'; OBJECT_ID OBJECT_NAME---------- -----------------------------------   35031 /7f6c264c_IIOPAddress   35030 /7f6c264c_IIOPAddressSQL> select /*+index(t IDX_PART_GLOBAL_FULL)*/ * from t_part t where object_id > 35000;
select /*+index(t IDX_PART_GLOBAL_FULL)*/ * from t_part t where object_id > 35000
*

第 1 行出现错误:

ORA-01502: 索引 'SCOTT.IDX_PART_GLOBAL_FULL' 或这类索引的分区处于不可用状态
当需要对分区表进行下面操作时,都会导致全局索引的失效。

ADD (HASH) COALESCE (HASH) DROP EXCHANGE MERGE MOVE SPLIT TRUNCATE

之后需要对失效索引进行重建,也可以在删除分区表的时候指定 UPDATE INDEXES 直接进行索引的重建。

总结

以上就是本文关于oracle分区索引的失效和重建代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:oracle 数据库启动阶段分析、oracle 虚拟专用数据库详细介绍等,有什么问题可以直接留言,小编会及时回复大家的。感谢朋友们对本站的支持!

索引 全局 分区表 代码 示例 内容 数据 数据库 时候 朋友 篇文章 问题 普通 接下来 兴趣 可以通过 命令 就是 方法 状态 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 国家建筑工程网技术人才数据库 女孩 软件开发 中国知名软件开发公司有哪些 全球领先的互联网科技企业 网络安全系统分几级 张家界软件开发测试 山西学生网络技术咨询计划表 寒假最后一课网络安全 在网络安全中 中断攻击 公众号软件开发如何收费 维盟服务器找不到用户列表 山西银联网络技术服务怎么样 国家计算机网络安全法 云顶之弈手游苹果怎么设置服务器 数据库联合索引优化 网络安全培训宣传片 数据库平面文件导入 国内网络安全风险挑战 烟台思卓软件开发公司 计算机网络技术能进厂吗 《时空之泪》服务端数据库文档 福建万鹏网络技术有限公司 华为云服务器租用多少钱 神经网络索引数据库 中职计算机网络技术学什么 北京易卓网络技术有限公司 无锡软件开发哪个公司靠谱 年薪三十万的网络技术人员 gbase查看数据库版本 数据库新闻管理代码
0