`
wsql
  • 浏览: 11788834 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

ORACLE数据库索引失效

 
阅读更多

数据库中有一个表,用PL/SQL查看该表的索引没有被DROP掉, 但是表上的数据查询起来很慢(查询时间大概是原来的3倍),后来重建了一下索引就好了, 请问这是为什么, 在什么情况下会出现类似的索引丢失的情况?

可能是你的表经常被更新,碎片太多,索引占用空间太大,优化器觉得没有必要用索引了
就直接全表扫描了啊,你重新建立索引,就整理了碎片了啊,当然就又用索引了

索引失效的情况很多,比如左边使用了函数 表没有分析 ,导致索引扫描的cost高于全表扫描,表很小 ,等等。需要具体分析。你可以根据执行计划来判断.


******************************************

以下情况会导致索引失效:
1) 直接导入:
imp with SKIP_UNUSABLE_INDEXES=Y
or sqlldr with SKIP_INDEX_MAINTENANCE

2) 在索引维护过程中出现ORA-1652/1653错误:
sqlldr DIRECT=Y failes with ORA-1652 or 1653

3) 分区维护导致ROWID发生改变:
ALTER TABLE MOVE PARTITION
ALTER TABLE TRUNCATE PARTITION
ALTER TABLE SPLIT PARTITION


****************************************************
索引失效问题解决方法:
1)导致的原因:
在SQL*LOADER 加载过程中会维护索引,由于数据量比较大,在SQL*LOADER 加载过程中出现异常情况,导致ORACLE 来不及维护索引,导致索引处于失效状态,影响查询和加载。
异常情况主要有:在加载过程中杀掉SQL*LOADER 进程,重启,表空间不够等。


2)解决方法:
重建索引
3)如何重建索引
a) 查看索引类型
select t1.index_name,t1.partitioned from Dba_Indexes t1
where t1.Table_Name=upper('CCB_COGNOS_PROD_BALANCE_AA')
索引名称 是否分区索引
GNOS_PROD_BALANCE_AA_N1 NO
b)非分区索引
重建索引:alter index cin.CCB_COGNOS_PROD_BALANCE_AA_N1 rebuild Nologging
c)分区索引
找出失效的分区索引:
select t.Index_Name, t.Partition_Name, t.Tablespace_Name, t.Status
from Dba_Ind_Partitions t
where t.Index_Name = 'CMZ_LOCAL_IDX_2'

重建所有状态为unusable的索引
ALTER INDEX 索引名
REBUILD PARTITION 分区名
TABLESPACE 表空间名
NOLOGGING

【转】ORACLE索引失效解决方案

最近碰到这样一个问题:在PROD_PARTS表中新添加了一个索引:

create index IDX_PT_DV_ID on PROD_PARTS (DEVICE_ID);

但是在使用DEVICE_ID字段进行查询时,发现该索引并没有被利用到:

SELECT * FROM PROD_PARTS WHERE device_id =122511619;
执行计划:
TABLE ACCESS FULL

之后请教DBA后,发现是数据统计的问题,具体的解决办法是执行下面的语句:

analyze table PROD_PARTS compute statistics;
ANALYZE TABLE PROD_PARTS COMPUTE STATISTICS FOR ALL INDEXED COLUMNS;
analyze table PROD_PARTS compute statistics for table for all indexes for all indexed columns;

分享到:
评论

相关推荐

    oracle数据库索引失效

    主要介绍了oracle数据库索引失效的原因及如何避免索引失效,有需要的小伙伴参考下。

    ORACLE数据库重建索引

    导致索引失效: 1、表上频繁发生update,delete操作; 2、表上发生了alter table ..move操作(move操作导致了rowid变化)。

    Oracle数据库日常维护手册

    5. 检查 ORACLE 数据库备份结果................................................................................... 14 5.1. 检查数据库备份日志信息............................................................

    Oracle数据库Sql性能调优

    1.29 强制索引失效 18 1.30 避免在索引列上使用计算 19 1.31 自动选择索引 20 1.32 避免在索引列上使用NOT 20 1.33 用>=替代> 21 1.34 用UNION替换OR (适用于索引列) 21 1.35 用IN来替换OR 22 1.36 避免在索引列上...

    Oracle Index索引无效的原因与解决方法

    最近遇到一个Oracle SQL语句的性能问题,修改功能之前的运行时间平均为0.3s,可是添加新功能后,时间达到了4~5s。虽然几张表的数据量都比较大(都在百万级以上),但是也都有正确创建索引,不知道到底慢在了哪里,...

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

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

    Oracle课件.pdf

    4.4 索引失效 5.表空间 6.表分区 6.1表空间及分区表的概念 6.2表分区的具体作用 6.3.表分区的优缺点 6.4表分区的几种类型及操作方法 6.5有关表分区的一些维护性操作 第5章 PL/SQL程序设计 1. PL/SQL简介 ...

    Oracle8i_9i数据库基础

    第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24 §1.2.2 数据字典概念 25 §1.3 ...

    深入解析Oracle.DBA入门进阶与诊断案例

    2.4.4 Oracle数据库的引导 91 2.4.5 系统对象与bootstrap$ 92 2.4.6 bootstrap$的重要性 94 2.4.7 BBED工具的简要介绍 95 2.4.8 坏块的处理与恢复 97 第3章 参数及参数文件 103 3.1 初始化参数的分类...

    2018最新Mysql高级视频教程

    随着淘宝去IOE(去除IBM小型机、Oracle数据库及EMC存储设备)化的推进,MySQL 数据库在当前的互联网应用中变得越来越重要,本教程主要讲授针对 Java 开发所需的 MySQL 高级知识,课程中会让大家快速掌握索引,如何避免...

    04尚硅谷_MySQL高级_BD版.docx

    随着淘宝去IOE(去除IBM小型机、Oracle数据库及EMC存储设备)化的推进,MySQL 数据库在当前的互联网应用中变得越来越重要,本教程主要讲授针对 Java 开发所需的 MySQL 高级知识,课程中会让大家快速掌握索引,如何避免...

    mysql lunix的安装

    随着淘宝去IOE(去除IBM小型机、Oracle数据库及EMC存储设备)化的推进,MySQL 数据库在当前的互联网应用中变得越来越重要,本教程主要讲授针对 Java 开发所需的 MySQL 高级知识,课程中会让大家快速掌握索引,如何避免...

    某银行数据库月度巡检报告

    (六) 索引/行迁移/行链 38 (七) 失效对象 39 (八) Enqueue等待分析 41 (九) Latch分析 41 (十) Resource Limit分析 41 (十一) Top SQL语句 43 九、 数据库备份策略评估 44 (一) 备份 44 (二) 恢复 44 附录1:初始化...

    非常全的oracle文档

    23.3. 索引 140 23.4. 视图 155 二十三、 分区表 159 24.1. 分区 159 24.2. 创建分区表 161 24.3. 范围分区(Range) 161 24.4. 列表分区(List) 164 24.5. 散列分区(Hash) 165 24.6. 组合范围散列分区 167 24.7. ...

    oracle常见故障类别及规划解析

    上一篇文章中我们了解了oracle分区索引的失效和重建代码示例的相关内容,接下来我们要看的内容是: 对任何数据库系统而言,对显而易见的故障,应当避免发生本文列出了Oracle常见的故障并给出了解决方案,同时列出了...

    数据库知识点总结

    7. 请说出你知道的索引失效的几种情况?8. 什么是聚簇索引与非聚簇索引9. Mysql索引主要使用的数据结构有哪些?10. 谈谈MyISAM和innoDb实现Btree索引方式的区别11. B+tree与B-tree的区别是什么?为什么B+tree更适合...

    Oracle9i的init.ora参数中文说明

    Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...

    Oracle-SQL基础到存储过程下载(第三阶段)

    051.sql对象_索引失效.mp4 052.sql对象_索引的优缺点.mp4 053.sql对象_表分区-范围分区.mp4 054.sql对象_表分区-列表分区.mp4 055.sql对象_表分区-组合分区.mp4 056.sql对象_表分区-哈希分区.mp4 057.sql对象_表分区...

    db2常用命令大全一看就明白

    近一年来在项目开发中使用到了IBM的DB2 9.1的数据库产品,跟Oracle相比一些命令有很大的区别,而它最大的功能是支持 xml存储、检索机制,通过XPath进行解析操作,使开发人员免于对xml文件在应用进行解析处理,先对...

Global site tag (gtag.js) - Google Analytics