建立index 使用Online導致的問題
在本地的測試庫中,本來空間就不足,結果建立了一個表有600多萬條記錄,想建立一個index. 物理段有340多M.
臨時段大小有100M,結果想建立一個索引,總是報臨時表空間不足的錯誤。
[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
排除了索引所在的表空間不足的問題,實時監控了一下,發現確實臨時表空間使用率在瞬間飆到100%,然後就報了ORA-01652的錯誤。
在嘗試各種方法之後,先擴大臨時段再次嘗試。
alter database tempfile '/u03/ora11g/oradata/TEST01/temp01.dbf' resize 200M;
結果再次嘗試的時候,就有了如下的錯誤。
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
一看就有些崩潰了,以為資料庫又掛了。一看程式,還在,還能連線。
[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
那就再次嘗試建立,結果錯誤接二連三。
再次建立,提示索引已經存在了。
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的狀態,顯示是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
無奈,總不能一直等著吧。而且過了好一會兒,也不見有進展。
如果在生產環境中,那絕對算是一次事故。在早期版本中,可能只有重啟,讓smon來做清理了。
不知道從10g還是11g開始,有dbms_repair包,裡面還包括了一個蠻實用的方法。可以解決這個問題。
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
這終於是我期望的結果了,看來在生產中,index的online rebuild也要慎重使用。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28211342/viewspace-2150894/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- index rebuild online的問題IndexRebuild
- “rebuild index online hang住" 問題解析RebuildIndex
- golang slice使用不慎導致的問題Golang
- 關於rebuild index online 及drop index後重建問題RebuildIndex
- ANALYZE導致的阻塞問題分析
- MySQL Flush導致的等待問題MySql
- Creating an Index Online - 線上建立索引Index索引
- 使用impdp不當導致的資料丟失問題
- C++中泛型使用導致的膨脹問題C++泛型
- create index online 與rebuild index onlineIndexRebuild
- create index online 與rebuild index onlineIndexRebuild
- 克隆ORACLE軟體的導致的問題Oracle
- 【epoll問題】EPOLLRDHUP使用導致無法接受資料
- 使用資料庫處理併發可能導致的問題資料庫
- rebuild index online和create index online及沒有online的區別RebuildIndex
- CAS導致的ABA問題及解決
- MySQL8.0 view導致的效能問題MySqlView
- 分散式鎖導致的超賣問題分散式
- react-router4:解決使用browserRouter模式導致的404問題React模式
- Elasticsearch 使用不同分詞器導致搜尋排名的問題Elasticsearch分詞
- 字元校驗集問題導致索引無法正常使用字元索引
- create index .. onlineIndex
- create index onlineIndex
- Index Online RebuildIndexRebuild
- Create Index ...ONLINEIndex
- index問題Index
- 關於 Laravel mix 導致 Bootstrap 失效的問題Laravelboot
- ORACLE資料檔名導致的奇怪問題Oracle
- SCHEDULER呼叫XDB程式導致效能問題
- 執行計劃的偏差導致的效能問題
- 【RAC】處理因ons導致CPU使用率過高的問題
- create index/create index online區別Index
- vue的scope導致樣式修改不了問題Vue
- EfCore3的OwnedType會導致Sql效率問題SQL
- javascript小數乘法運算導致的精度問題JavaScript
- 完美的執行計劃導致的效能問題
- Oracle資料庫導致效能問題的可能原因Oracle資料庫
- 一次oracle行級鎖導致的問題Oracle