日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

有关域索引错误产生的原因及解决办法

發(fā)布時間:2023/12/1 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 有关域索引错误产生的原因及解决办法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

1說明

數(shù)據(jù)庫錯誤ORA-29861:域索引標(biāo)記為LOADING/FAILED/UNUSABLE,其錯誤原因及解決辦法,根據(jù)ORACLE官方文檔的說法如下:

//?*Cause:?An?attempt?has?been?made?to?access?a?domain?index?that?is
//?????????being?built?or?is?marked?failed?by?an?unsuccessful?DDL
//?????????or?is?marked?unusable?by?a?DDL?operation.

//?*Action:?Wait?if?the?specified?index?is?marked?LOADING
//??????????Drop?the?specified?index?if?it?is?marked?FAILED
//??????????Drop?or?rebuild?the?specified?index?if?it?is?marked?UNUSABLE

由上述可知,當(dāng)空間索引被DDL標(biāo)記為FAILED或UNUSABLE時,訪問空間索引會報該錯誤。當(dāng)出現(xiàn)此類錯誤時,若標(biāo)記為LOADING,則需等待DDL完成;若標(biāo)記為FAILED,則需刪除索引;若標(biāo)記為USUSABLE,則需重建或刪除。盡管,ORACLE給出了解決辦法,但顯然不適用于我們的使用場景。我們不可能在每一次出現(xiàn)此類錯誤時,都刪除索引重建或者使用REBUILD命令。我們的目標(biāo)是避免此類錯誤的產(chǎn)生,而不是在此類錯誤發(fā)生后采取某些解決手段。

既然是由DDL引起,自然首先應(yīng)關(guān)心哪些DDL會引起此類錯誤呢?這里分兩類情況,分全局索引和分區(qū)索引。

2全局索引

????當(dāng)使用全局域索引時,以下的DDL命令會造成上述域索引錯誤:

  • Exchange partition(我們的應(yīng)用中目前沒有使用這一技術(shù))
  • Drop partiion ,當(dāng)drop的分區(qū)中存在數(shù)據(jù)記錄時,標(biāo)記UNUSABLE
  • Truncate partition(我們的應(yīng)用中目前沒有使用這一技術(shù))
  • Split partition ,當(dāng)分裂后的兩個分區(qū)中均存在數(shù)據(jù)時,標(biāo)記UNUSABLE
  • Create index ,當(dāng)由于某些原因(例如弧),創(chuàng)建失敗時,標(biāo)記FAILED

在我們的應(yīng)用中,存在drop partition、split partition、create index命令。其中create index在數(shù)據(jù)庫初始化的時候進(jìn)行,此時圖層為空圖層,所以不會出現(xiàn)將域索引標(biāo)記為FAILED的情況;而drop partition會在刪除某個縣的數(shù)據(jù)時用到,此時該分區(qū)內(nèi)可能有數(shù)據(jù),當(dāng)存在數(shù)據(jù)時,會導(dǎo)致域索引被標(biāo)記為USUABLE;split partition會在應(yīng)用中用到,但不會出現(xiàn)分裂后的兩個分區(qū)均存在數(shù)據(jù)的情況,因此在我們的應(yīng)用中不會因?yàn)閟plit partition導(dǎo)致域索引被標(biāo)記為UNUSABLE或FAILED。因此,得出一個結(jié)論,在使用drop partition、技術(shù)刪除某個縣的數(shù)據(jù)時,若使用全局索引,極有可能出現(xiàn)域索引的問題。

可以通過如下命令查看某個全局索引是否被標(biāo)記為UNUSABLE或FAILED。

select INDEX_NAME,INDEX_TYPE,STATUS,DOMIDX_STATUS,DOMIDX_OPSTATUS from user_indexes where table_name=TABLENAME and index_type='DOMAIN';

若STATUS值為UNUSABLE或FAILED,或者DOMIDX_OPSTATUS值為FAILED,則該索引需要被刪除或被重建。重建的命令如下:

Alter index index_name rebuild;

3分區(qū)索引

????當(dāng)使用分區(qū)索引時,以下DDL命令會造成上述域索引錯誤:

  • ????Split partition ,當(dāng)分裂后的兩個分區(qū)中均存在數(shù)據(jù)時,標(biāo)記UNUSABLE
  • Create index ,當(dāng)由于某些原因(例如弧),創(chuàng)建失敗時,標(biāo)記FAILED

其中create index在數(shù)據(jù)庫初始化的時候進(jìn)行,此時圖層為空圖層,所以不會出現(xiàn)將域索引標(biāo)記為FAILED的情況;split partition會在應(yīng)用中用到,但不會出現(xiàn)分裂后的兩個分區(qū)均存在數(shù)據(jù)的情況,因此在我們的應(yīng)用中不會因?yàn)閟plit partition導(dǎo)致域索引被標(biāo)記為UNUSABLE或FAILED。綜上所述,對于分區(qū)索引,我們的應(yīng)用應(yīng)該不會導(dǎo)致域索引錯誤。當(dāng)?shù)拇_在分區(qū)索引時出現(xiàn)了域索引錯誤,極有可能將多個縣的數(shù)據(jù)入在了一個分區(qū)中。而至于為什么出現(xiàn)將多個縣的數(shù)據(jù)入在了一個分區(qū)中,需要認(rèn)真分析原因。

可以通過如下命令查看某個全局索引是否被標(biāo)記為UNUSABLE或FAILED。

Select INDEX_NAME,PARTITION_NAME,STATUS,DOMIDX_OPSTATUS from user_ind_partitions where index_name=INDEXNAME

若STATUS值為UNUSABLE或FAILED,或者DOMIDX_OPSTATUS值為FAILED,則該索引需要被刪除或被重建。重建的命令如下:

Alter index INDEXNAME rebuild partition partition_name;

轉(zhuǎn)載于:https://www.cnblogs.com/6yuhang/p/8250488.html

總結(jié)

以上是生活随笔為你收集整理的有关域索引错误产生的原因及解决办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。