<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    斷點

    每天進步一點點!
    posts - 174, comments - 56, trackbacks - 0, articles - 21

    今天在選擇一條記錄進行做刪除操作時,碰見index失敗的問題,如下:
    處理失敗!錯誤信息:[SQLException  ORA-01502  index  VHL_V6.PK_WEB_APP_TGT_OBJ  or partition of such index is in unusable state ]
    在網上查詢了下,知道原因,就上數據庫查了一下,結果如下:
    1 PK_WEB_APP_TGT_OBJ NORMAL VHL_V6 TABLE UNUSABLE。
    顯然是UNUSABLE狀態,那也就知道原因了,呵呵,解決!

    以下為參考文件:

    SQL> create table t(a number);
    Table created.

    1、現在,我們建立一個唯一索引來看看:
    SQL> create unique index idx_t on t(a);
    Index created.
    SQL> select index_name,index_type,tablespace_name,table_type,status from user_indexes where index_name='T';         
    no rows selected
    SQL> select index_name,index_type,tablespace_name,table_type,status from user_indexes where index_name='IDX_T';
    INDEX_NAME                     INDEX_TYPE                  TABLESPACE_NAME                TABLE_TYPE  STATUS
    ------------------------------ --------------------------- ------------------------------ ----------- --------
    IDX_T                          NORMAL                      DATA_DYNAMIC                   TABLE       VALID
    SQL> insert into t values(1);
    1 row created.
    SQL> commit;
    Commit complete.

    2、將索引手工修改為unusable狀態(模擬發生索引失效的情況):
    SQL> alter index idx_t unusable;
    Index altered.
    SQL>  select index_name,index_type,tablespace_name,table_type,status from user_indexes where index_name='IDX_T';
    INDEX_NAME                     INDEX_TYPE                  TABLESPACE_NAME                TABLE_TYPE  STATUS
    ------------------------------ --------------------------- ------------------------------ ----------- --------
    IDX_T                          NORMAL                      DATA_DYNAMIC                   TABLE       UNUSABLE
    我們看到這是,已經不能正常往表中插入數據:
    SQL> insert into t values(2);
    insert into t values(2)
    *
    ERROR at line 1:
    ORA-01502: index 'MISC.IDX_T' or partition of sUCh index is in unusable state

    3、首先,我們通過重建索引(rebuild index)的方法來解決問題:
    SQL> alter index idx_t rebuild;
    Index altered.
    SQL> select index_name,index_type,tablespace_name,table_type,status from user_indexes where index_name='IDX_T';
    INDEX_NAME                     INDEX_TYPE                  TABLESPACE_NAME                TABLE_TYPE  STATUS
    ------------------------------ --------------------------- ------------------------------ ----------- --------
    IDX_T                          NORMAL                      DATA_DYNAMIC                   TABLE       VALID
    SQL> insert into t values(2);
    1 row created.
    SQL> commit;
    Commit complete.
    SQL>

    4、現在我們再次模擬索引失效(unusable狀態):
    SQL> alter index idx_t unusable;
    Index altered.
    SQL> select index_name,index_type,tablespace_name,table_type,status from user_indexes where index_name='IDX_T';
    INDEX_NAME                     INDEX_TYPE                  TABLESPACE_NAME                TABLE_TYPE  STATUS
    ------------------------------ --------------------------- ------------------------------ ----------- --------
    IDX_T                          NORMAL                      DATA_DYNAMIC                   TABLE       UNUSABLE
    SQL> insert into t values(3);
    insert into t values(3)
    *
    ERROR at line 1:
    ORA-01502: index 'MISC.IDX_T' or partition of such index is in unusable state

    5、然后,看看是否可以通過設置參數skip_unusable_indexes=true來解決問題:
    SQL> alter session set skip_unusable_indexes=true;
    Session altered.
    SQL> insert into t values(3);
    insert into t values(3)
    *
    ERROR at line 1:
    ORA-01502: index 'MISC.IDX_T' or partition of such index is in unusable state
    SQL> select index_name,index_type,tablespace_name,table_type,status from user_indexes where index_name='IDX_T';
    INDEX_NAME                     INDEX_TYPE                  TABLESPACE_NAME                TABLE_TYPE  STATUS
    ------------------------------ --------------------------- ------------------------------ ----------- --------
    IDX_T                          NORMAL                      DATA_DYNAMIC                   TABLE       UNUSABLE
    SQL> alter index idx_t rebuild;
    Index altered.
    SQL> select index_name,index_type,tablespace_name,table_type,status from user_indexes where index_name='IDX_T';
    INDEX_NAME                     INDEX_TYPE                  TABLESPACE_NAME                TABLE_TYPE  STATUS
    ------------------------------ --------------------------- ------------------------------ ----------- --------
    IDX_T                          NORMAL                      DATA_DYNAMIC                   TABLE       VALID
    SQL> insert into t values(3);
    1 row created.
    SQL> commit;
    Commit complete.
    SQL>

    總結:對于unique index,通過簡單的設置參數是不能解決問題的,要解決unique index 失效的問題,只能通過重建索引來實現。

    資料引用:http://www.knowsky.com/388811.html


    posted @ 2009-09-26 21:36 斷點 閱讀(80) | 評論 (0)
    主站蜘蛛池模板: 一级毛片免费观看不卡视频| 午夜亚洲国产精品福利| 99精品视频免费在线观看| 亚洲综合日韩久久成人AV| 无人视频免费观看免费视频| 日本免费一区尤物| 在线观看亚洲免费| 哒哒哒免费视频观看在线www | 日本黄网站动漫视频免费| 久久久久亚洲av无码专区导航| 1000部拍拍拍18勿入免费凤凰福利| 亚洲人妖女同在线播放| 天天看片天天爽_免费播放| 亚洲国产精品无码第一区二区三区| 免费人成网站在线高清| 精品免费久久久久国产一区| 国产成人亚洲综合无码精品| 222www免费视频| 亚洲欧美日本韩国| 亚洲精品国产综合久久一线| 久久免费视频网站| 亚洲乱码卡一卡二卡三| 免费国产一级特黄久久| 久久中文字幕免费视频| 亚洲综合久久精品无码色欲 | 亚洲成av人在线视| 在线永久免费的视频草莓| 亚洲AV无码AV男人的天堂不卡| 亚洲精品国产综合久久一线| 99精品一区二区免费视频| 亚洲一区二区三区高清不卡 | 久久精品毛片免费观看| 中文字幕亚洲精品无码| 久久久久国产亚洲AV麻豆| 99在线热视频只有精品免费| 亚洲日韩一中文字暮| 久久精品九九亚洲精品天堂| 成人免费无码视频在线网站| 国产99视频精品免费视频76| 亚洲久悠悠色悠在线播放| 国产自偷亚洲精品页65页|