oracle怎么找出失效索引,Oracle数据库索引失效
Oracle数据库中有一个表,用PL/SQL查看该表的索引没有被DROP掉, 但是表上的数据查询起来很慢(查询时间大概是原来的3倍),后
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;
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
oracle怎么找出失效索引,Oracle数据库索引失效相关推荐
- mysql 左连接 怎么走索引_数据库索引、左连接、右连接、等值连接
在MySQL中,主要有四种类型的索引,分别为:B-Tree索引,Hash索引,Fulltext索引(MyISAM 表)和R-Tree索引,本文讲的是B-Tree索引. 一.Mysql索引主要有两种结构 ...
- 数据库mysql的索引_数据库索引
数据库索引 编辑 锁定 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息.如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信 ...
- oracle树子类遍历父类_不懂数据库索引的底层原理?那是因为你心里没点b树
前几天下班回到家后正在处理一个白天没解决的bug,厕所突然传来对象的声音: 对象:xx,你有<时间简史>吗? 我:我去!妹子,你这啥癖好啊,我有时间也不会去捡屎啊! 对象:...人家说的是 ...
- access建立两个字段唯一索引_数据库索引原理及优化
微信公众号:云计算通俗讲义 持续输出技术干货,欢迎关注! 通过本文你将了解: 概述 分类 索引底层实现原理 基本操作 索引失效 索引优化 01 概述 索引是帮助MySQL高效获取数据的排好序的数据结构 ...
- 位图索引,数据库索引浅浅的学习
摘自http://www.cnblogs.com/LBSer/p/3322630.html 位图(BitMap)索引 前段时间听同事分享,偶尔讲起Oracle数据库的位图索引,顿时大感兴趣.说来惭愧, ...
- mysql实现位图索引_位图索引,数据库索引浅浅的学习
位图(BitMap)索引 前段时间听同事分享,偶尔讲起Oracle数据库的位图索引,顿时大感兴趣.说来惭愧,在这之前对位图索引一无所知,因此趁此机会写篇博文介绍下位图索引. 1. 案例 有张表名为ta ...
- mysql的数据库的索引_MySQL 数据库索引原理与分类
前言 数据库索引本质上是一种数据结构(存储结构+算法),目的是为了加快目标数据检索的速度. 目录 1.索引的本质与原理? 2.索引的分类? 1.索引的本质与原理 我们先看一个问题: 假设现在有1000 ...
- mysql索引 聚集索引_MySql数据库索引-聚集索引和辅助索引
InnoDB存储引擎索引: B+树索引:不能找到一个给定键值的具体行,能找到的只是被查找数据行所在的页.然后把页加载到内存,在查询所要的数据. 全文索引: 哈希索引:InnoDB会根据表的使用情况自动 ...
- 在ORACLE中找出并批量编译失效的对象
每次数据库升级之后,都需要对库中的对象进行重新编译一下.下面整理出了一个脚本,只需要执行一下就能批量编译这些失效的对象.需要注意的是:因权限问题,最好是选择sys用户来执行这个脚本,如是plsql d ...
最新文章
- java基础--日期--练习集锦
- 如何创建vss2005的数据库
- python教程书籍推荐-推荐几本对于Python初学者比较好的书籍(内含PDF)
- iOS 13 真机调试包
- mysql中约束_【MySQL】:MySQL中四大约束
- SSH初体验系列--Hibernate--1--环境配置及demo
- 牛客题霸 [ 环形链表的约瑟夫问题] C++题解/答案
- 10年老电脑如何提速_电脑越用越卡?如何简单升级,让你的旧笔记本瞬间提速...
- 图片盒子控件 winform 114868210
- java日期互转:LocalDateTime、String、Instant、Date
- CSDN帐号管理规范
- android app安装apk,Android App更新安装APK
- 如何理解虚拟DOM?
- 一元三次方程的解法史
- J2SDK1.5-J2SDK5.0,哈哈
- java 如何清除临时文件_如何删除Java中的临时文件?
- jax-rs jax-ws_了解WS-Policy
- npoi 设定视图为分页预览_NPOI导出EXCEL 打印设置分页及打印标题
- net start mysql发生系统错误2 解决方法
- Mr.Xiong使用jQuery实现一到一百随机数和事件的委派的效果