首页 > Linux操作系统 > Linux操作系统 > 一次简单的索引重建错误
'Q7K,Z5}&v7r3d0找出慢的语句,然后看哪些表,如果表太大了就要delete清理,清理完了就move + rebuild
*@*OXAw&r0IXPUB技术博客oW @sUk/Rmove + rebuild 的方法:IXPUB技术博客z:m3M9F n
IXPUB技术博客6\%|1e#T d(1) 查查它有多少个索引IXPUB技术博客4[jXT~D$_
select 'alter index '||index_name||' rebuild online;' from user_indexes where table_name='表名'
(2) 移表IXPUB技术博客 k:e&G!vf @-~m'O6R
alter table 表名 move;IXPUB技术博客,f9o d.n/u/]
(3) 把(1)的语句粘贴下来重建索引IXPUB技术博客'@rj5B$|!LC
IXPUB技术博客;XR-_1V!@9xj)L3A#X0@呵呵,开始还挺顺利的,同事找出了一个很慢的语句,里面有7百多万数据,清掉了,剩下80多万,move和rebuild完后,效率大大提高。IXPUB技术博客XV_(N5e
C|^b,mzUoH0下午就出现问题了,他在重建另一个表的索引时,报以下错误IXPUB技术博客!M$Lr:Jv~t!]
IXPUB技术博客9Vs$Bv*Ialter index IDX_PHSSEND_MSGTYPE rebuild onlineIXPUB技术博客5b p)S$I1p"}b#O4O
*IXPUB技术博客 N6b#z[ U
ERROR at line 1:
VN5][1MH/{0ORA-08108: may not build or rebuild this type of index onlineIXPUB技术博客0c^ m.t`"Z&K+]KZ
l{oQ&^U8J T0这种情况一般就发生在函数索引和bitmap索引等情况下,一查果然是这样:IXPUB技术博客2M[pp7Zx
8Ff'UR%o"f'xj2c)S ]0SQL> select index_name,STATUS,INDEX_TYPE,tablespace_name from user_indexes where table_name='T_SMS_PHSSEND' and status='UNUSABLE'; IXPUB技术博客)?*fzi)E@ d0j
5kQ0K8oyCDB0INDEX_NAME STATUS INDEX_TYPE TABLESPACE_NAME
1t R^"uq R0------------------ ---------------- ------------------- --------------------
oV4X'LQ3N G Y;W y0IDX_PHSSEND_MSGFLG UNUSABLE BITMAP IDX_SXTIXPUB技术博客HL4Y8U%eQG
IDX_PHSSEND_MSGTYPE UNUSABLE BITMAP IDX_SXTIXPUB技术博客 oXY~3YJ[
I"xA_ m:}I? b$L-e:s0这种索引一般只能是drop掉重建,取出创建脚本,重新建上索引,故障解决。
i-S5qykcU;_3_hmk0来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9390331/viewspace-692465/ ,如需转载,请注明出处,否则将追究法律责任。