1. 程式人生 > 其它 >ORA-01653: unable to extend table keep.ic_log by 128 in tablespace IDX_LOG

ORA-01653: unable to extend table keep.ic_log by 128 in tablespace IDX_LOG

今天同事反饋資料庫寫表存在問題,平常寫表的資料量每天上萬條,最近只有幾十條。
說查了表空間使用率,沒發現問題
---查詢永久表空間使用率
set lines 2000
col USED_PER for a60
SELECT A.TABLESPACE_NAME AS TABLESPACE_NAME,
ROUND(TOTAL/1024/1024/1024,3) AS TOTAL_GB,
ROUND(FREE/1024/1024/1024,2) AS FREE_GB,
ROUND(( TOTAL - FREE )/1024/1024/1024,2) AS USED_GB,
TO_CHAR(ROUND(( TOTAL - FREE ) / TOTAL * 100, 2),'90.99')||'%' AS USED_PER
FROM (SELECT TABLESPACE_NAME,
SUM(BYTES) FREE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) A,
(SELECT TABLESPACE_NAME,
SUM(BYTES) TOTAL
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) B
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME
order by USED_PER desc;
顯示結果28條,沒發現表空間IDX_LOG相關資訊。

最近專案也沒有變更事項,很奇怪,我查了下資料庫alert日誌,
發現有報錯:ORA-01653: unable to extend table keep.ic_log by 128 in tablespace IDX_LOG
提示寫表時索引表空間IDX_LOG不足。

於是我在資料檔案字典表中檢視
select distinct TABLESPACE_NAME,STATUS from dba_data_files order by TABLESPACE_NAME;檢視,顯示結果有29條。

dba_tablespaces和dba_data_files都有,status也正常,DBA_FREE_SPACE沒有

回頭去看查詢表空間使用率的語句,其中有一段sql:
SELECT TABLESPACE_NAME,
SUM(BYTES) FREE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME;
這段查詢結果並沒有IDX_LOG相關資訊。

dba_tablespaces和dba_data_files都有,DBA_FREE_SPACE沒有

解決方法:
增加表空間得到解決,使用率的sql和DBA_FREE_SPACE可以查到了。
ALTER TABLESPACE IDX_LOG ADD DATAFILE '/opt/oradata/keep/IDX_LOG02.dbf' SIZE 8G;