Oracle
嘗試插入新數據庫的空表時,索引表空間上的 ORA-01658
我們的應用程序日誌中出現 ORA-01658(錯誤:ORA-01658:無法為表空間 MYDATA_LDATA_INDEX 中的段創建初始範圍)。當應用程序第一次嘗試將數據插入到空表中時,就會發生這種情況。它只發生在這個特定的索引上。表空間可用空間減少 50M 的倍數。
用於創建索引表空間的參數:
CREATE TABLESPACE MYDATA_LDATA_INDEX DATAFILE '/index/oradata/mydb/mydata_ldata_index_01.dbf' SIZE 1300M AUTOEXTEND ON NEXT 10M MAXSIZE 2048M LOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL UNIFORM SIZE 50M BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT AUTO FLASHBACK ON;
我們確信應用程序不會嘗試將大量數據插入表中,僅插入一行的操作也會導致這種情況。
手動增加索引的表空間後,可以繼續正常操作,索引的表空間使用量不會急劇增加。
我們在 Solaris 11.1 上使用Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production 。
我們如何確定問題的根源?索引表空間的參數有問題嗎?
Oracle 文件記錄了有關 ORA-01658 的資訊:
ORA-01658: 無法為表空間字元串中的段創建初始範圍
原因:未能找到足夠的連續空間來為正在創建的段分配初始範圍。
行動:使用 ALTER TABLESPACE ADD DATAFILE 添加額外的空間到表空間或重試與初始值較小。
ORA-01657 錯誤的明顯解決方法是:
- 使 INITIAL 範圍大小更小
- 清空資源回收筒
- 在表空間中添加數據文件以提供更大的連續塊大小。
- 重組表 空間中的表
試試這個查詢你的表空間最大塊大小tsfree.sql。
這種 ORA-01658 案例涉及需要使表空間更大,這可以通過擴展文件或添加另一個文件來完成。對於 ORA-01658,這是一個很好的解決方案,因為需要精心創建儲存庫表,同時牢記表的範圍。
此資訊取自ORA-01658:無法從 dba-oracle.com 網站創建初始範圍提示。
免責聲明:
我與公司沒有任何關係。