oracle分区索引的失效和重建代码示例
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,上一篇文章中我们了解了oracle普通表转化为分区表的方法的相关内容,接下来的这篇文章,我们将探讨oracle分区索引的失效和重建问题,提供了相关代码示例供大家参考,具体如下。--创建测试表SQL>
千家信息网最后更新 2025年01月21日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安全错误
数据库的锁怎样保障安全
安装ug许可证提示有服务器
岛屿设计软件开发
土壤数据库代码
济南银行网络安全岗位
海南手机软件开发平台
软件工程(金融软件开发
靖江工业网络技术保养
网络安全配置方式
小孩网络安全不得不说的事
数据库查指定日期重复数据
数据库技术文案情绪
杭州梦幻西游服务器
单片机软件开发的工作是什么
数据库2017下载
软件开发业务逻辑
服务器管理规范pdf
数据库表为什么要前缀
家里怎么安装路由服务器
华为云服务器安全防护怎么做
山东第三方软件开发大概要多少钱
软件开发有预付款么
小孩网络安全不得不说的事
网络安全属于什么法律
服务器远程备份软件
中国ai服务器咨询
高中生网络安全教案
外汇管理局服务器
康佳社招软件开发
可以导出数据库的公众号表单
安徽省网络安全宣传周手机怎么用