oracle分区索引的失效和重建代码示例
发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,上一篇文章中我们了解了oracle普通表转化为分区表的方法的相关内容,接下来的这篇文章,我们将探讨oracle分区索引的失效和重建问题,提供了相关代码示例供大家参考,具体如下。--创建测试表SQL>
千家信息网最后更新 2024年11月24日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安全错误
数据库的锁怎样保障安全
私自入侵公司数据库
国家电网信通部网络安全处
与网络安全有关作文
网络技术考研院校排名
2017 地区数据库
互联网科技快报
数据库还书日期推迟十天怎么做
博诺升学数据库
邯郸瑞来电子软件开发有限公司
GRAS安全数据库
吉林加工软件开发试验设备
网络安全党支部工作责任制
北京天诚威信网络技术有限公司
mysql数据库减肥
中专网络技术是什么
宜昌贝库互联网科技有限公司
广州网络技术研究所
我的世界如何开免费国际版服务器
千岛湖阿里巴巴服务器基地
女生赴日软件开发
网络安全法对生活的积极影响
展海互联网科技公司融资总监
广东移动云主机云服务器
农业银行软件开发出国
网络安全能考研究生吗
数据库技术及应用摘要
数据库设计多对多一对多
徐汇区上门软件开发厂家售后保障
网络安全防范应采取哪些措施
商务数据库如何连编项目