創(chuàng)建index使用Online導致的問題

在本地的測試庫中,本來空間就不足,結(jié)果創(chuàng)建了一個表有600多萬條記錄,想創(chuàng)建一個index. 物理段有340多M.

10年的南靖網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整南靖建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)從事“南靖網(wǎng)站設(shè)計”,“南靖網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。

臨時段大小有100M,結(jié)果想創(chuàng)建一個索引,總是報臨時表空間不足的錯誤。

[ora11g@rac1 test]$ ksh test.sh "create unique index t_pk on t(object_id) tablespace pool_data nologging online;"
create unique index t_pk on t(object_id) tablespace pool_data nologging online
                            *
ERROR at line 1:
ORA-01652: unable to extend temp segment by 128 in tablespace TEMPTS1

排除了索引所在的表空間不足的問題,實時監(jiān)控了一下,發(fā)現(xiàn)確實臨時表空間使用率在瞬間飆到100%,然后就報了ORA-01652的錯誤。

在嘗試各種方法之后,先擴大臨時段再次嘗試。

alter database tempfile '/u03/ora11g/oradata/TEST01/temp01.dbf' resize 200M;

 

結(jié)果再次嘗試的時候,就有了如下的錯誤。
create unique index t_pk on t(object_id) tablespace pool_data nologging online
                            *
ERROR at line 1:
ORA-00603: ORACLE server session terminated by fatal error
ORA-01114: IO error writing block to file  (block # )
ORA-01114: IO error writing block to file 201 (block # 15439)
ORA-27072: File I/O error
Additional information: 4
Additional information: 15439
Additional information: 4096
Process ID: 5683
Session ID: 18 Serial number: 103

Elapsed: 00:00:21.11
ERROR:
ORA-03114: not connected to ORACLE

一看就有些崩潰了,以為數(shù)據(jù)庫又掛了。一看進程,還在,還能連接。

[ora11g@rac1 dbm_lite]$ ps -ef|grep smon
ora11g    2357     1  0 05:32 ?        00:00:01 ora_smon_TEST01
ora11g    5746  5327  0 06:27 pts/0    00:00:00 grep smon

 

查看alert日志。

Fri Jun 06 06:26:14 2014
alter database tempfile '/u03/ora11g/oradata/TEST01/temp01.dbf' resize 200M
Completed: alter database tempfile '/u03/ora11g/oradata/TEST01/temp01.dbf' resize 200M
Fri Jun 06 06:26:39 2014
online index (re)build cleanup: objn=15331 maxretry=2000 forever=0
Fri Jun 06 06:26:57 2014
Non critical error OR

 

那就再次嘗試創(chuàng)建,結(jié)果錯誤接二連三。

再次創(chuàng)建,提示索引已經(jīng)存在了。 
create unique index t_pk on t(object_id) tablespace pool_data nologging
                    *
ERROR at line 1:
ORA-00955: name is already used by an existing object

 

那我刪除重建呢。

drop index t_pk
           *
ERROR at line 1:
ORA-08104: this index object 15334 is being online built or rebuilt

 

試試force選項。

drop index t_pk force
*
ERROR at line 1:
ORA-29862: cannot specify FORCE option for dropping non-domain index

 

查看Index的狀態(tài),顯示是valid

********** INDEX DETAILS INFO *****************

INDEX_NAME                     TABLESPACE INDEX_TYPE UNIQUENES PAR COLUMN_LIST                    TABLE_TYPE STATUS   NUM_ROWS LAST_ANAL G
------------------------------ ---------- ---------- --------- --- ------------------------------ ---------- ------ ---------- --------- -
T_PK                           POOL_DATA  NORMAL     UNIQUE    NO  OBJECT_ID                      TABLE      VALID                       N

TABLE_NAME                     INDEX_NAME                     CLUSTERING_FACTOR     BLOCKS   NUM_ROWS
------------------------------ ------------------------------ ----------------- ---------- ----------
T                              T_PK                                                  39174    6856704

 

那我再次rebuild 可以嗎?

alter index t_pk rebuild parallel 4
*
ERROR at line 1:
ORA-08104: this index object 15334 is being online built or rebuilt

 

無奈,總不能一直等著吧。而且過了好一會兒,也不見有進展。

如果在生產(chǎn)環(huán)境中,那絕對算是一次事故。在早期版本中,可能只有重啟,讓smon來做清理了。

不知道從10g還是11g開始,有dbms_repair包,里面還包括了一個蠻實用的方法??梢越鉀Q這個問題。

SQL> declare
  2  isClean boolean;
  3 
  4  begin
  5  isClean := FALSE;
  6  while isClean=FALSE loop
  7  isClean := dbms_repair.online_index_clean(dbms_repair.all_index_id,
  8  dbms_repair.lock_wait);
  9  dbms_lock.sleep(2);
10  end loop;
11  exception
12  when others then
13  RAISE;
14  end;
15  /

PL/SQL procedure successfully completed.

 

運行成功后,再次嘗試。

alter index t_pk rebuild parallel 4
*
ERROR at line 1:
ORA-01418: specified index does not exist

 

這終于是我期望的結(jié)果了,看來在生產(chǎn)中,index的online rebuild也要慎重使用。

當前名稱:創(chuàng)建index使用Online導致的問題
當前URL:http://bm7419.com/article42/jdeiec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護定制開發(fā)、用戶體驗云服務器、建站公司、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設(shè)