注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

常在心

淡泊明志,人生自在

 
 
 

日志

 
 

表中的索引失效导致数据插入失败问题:  

2012-03-07 15:47:25|  分类: oracle问题 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

【问题现象】
运维和产品组反映拉取日常任务表的数据,有一个表的数据的找不到现象,

【问题分析】
咨询开发人员拉取数据所对应的表为MISSION_LOG,发现对应的分区2月份,3月份没有数据,执行操作的时间为2012年3月7日,查询如下
select count(*) from mission_log where partkey_month='02';

  COUNT(*)
----------
         0


前端和数据库方面没有什么报错的信息,为什么会出现数据没有插入进去呢?
1)检查失效对象:
set linesize 132;
col object_name for a20;
select owner,object_name,object_type from dba_objects where status='INVALID';
没有看到有失效的对象


2)检查失效的索引
SQL> select index_name ,status from dba_indexes where status='UNUSABLE';

INDEX_NAME                     STATUS
------------------------------ --------
IDX_MISSION_LOG_NU1         UNUSABLE
IDX_MISSION_LOG_U1          UNUSABLE

看到有二个索引失效,但想想索引失效应该不会影响数据的插入,要特别注意的是分区表和IOT表,索引失效的时候,就会导致数据插入失败,引用官方的解释:
An index-organized table is a table stored in a variation of a B-tree index structure. In a heap-organized table, rows are inserted where they fit. In an index-organized table, rows are stored in an index defined on the primary key for the table. Each index entry in the B-tree also stores the non-key column values. Thus, the index is the data, and the data is the index. Applications manipulate index-organized tables just like heap-organized tables, using SQL statements.

从上面的意思可以看到很关键的语句“Thus, the index is the data, and the data is the index”,索引就是数据,数据也就是索引,因此如果索引失效了,数据是注定不会写入的。

【问题解决】
alter index IDX_MISSION_LOG_NU1 rebuild online;
alter index IDX_MISSION_LOG_U1 rebuild online;


select count(*) from mission_log where partkey_month='02';

  COUNT(*)
----------
         310

【总结】
1、以前只关注是否存在失效的对象,dba_objects里面的status默认只有valid和invalid的值
2、进行数据迁移时,要留意有索引组织表和分区表的数据,一定要查询对应的对象以及索引是否都可用的。


  评论这张
 
阅读(311)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017