Oracle

嘗試插入新數據庫的空表時,索引表空間上的 ORA-01658

  • April 8, 2017

我們的應用程序日誌中出現 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 錯誤的明顯解決方法是:

  1. 使 INITIAL 範圍大小更小
  2. 清空資源回收筒
  3. 在表空間中添加數據文件以提供更大的連續塊大小。
  4. 重組表 空間中的表

試試這個查詢你的表空間最大塊大小tsfree.sql

這種 ORA-01658 案例涉及需要使表空間更大,這可以通過擴展文件或添加另一個文件來完成。對於 ORA-01658,這是一個很好的解決方案,因為需要精心創建儲存庫表,同時牢記表的範圍。

此資訊取自ORA-01658:無法從 dba-oracle.com 網站創建初始範圍提示。

免責聲明

我與公司沒有任何關係。

引用自:https://dba.stackexchange.com/questions/59966