oracle表空間不足:ORA-01653: unable to extend table
問題背景:
oracle表空間不足報錯是比較常見的故障,尤其是沒有對剩餘表空間做定期巡檢的系統;
報錯程式碼如下:
oracle表空間不足錯誤程式碼:ORA-01653: unable to extend table ;
解決方式:
1、檢視錶空間使用率:
set linesize 220;
set pagesize 500;
col tbsn for a40;
select total.tablespace_name TBSN,
round(total.MB,3) as total_space,
case when free.MB is null then 0
else round(free.MB,3)
end as free_space,
case when free.MB is null then 0
else round(free.MB,3)/round(total.MB,3)*100 end as free_rate
from ( select tablespace_name, sum(bytes/1024/1024) MB from dba_data_files group by tablespace_name ) total,
( select tablespace_name, sum(bytes/1024/1024) MB from dba_free_space group by tablespace_name ) free
where total.tablespace_name=free.tablespace_name(+)
order by free_rate desc;
上述程式碼可以查詢中資料庫有哪些表空間,總空間大小,剩餘空間大小以及使用百分比,可以做到對錶空間使用情況的一目瞭然
2、 檢視磁碟那個空間表多,把表空間放在剩餘空間比較多的地方(Linux作業系統)
df -h
3、檢視錶空間資料檔案:
一定要確認好路徑,和原有的檔案路徑保持一致
set wrap on;
set lines 170
col file_name for a80
select file_id,file_name,bytes/1024/1024 MB from dba_data_files where tablespace_name=upper('&tablespace_name');
4、如果是RAC環境還要檢視asm磁碟剩餘空間
select group_number,name,total_mb,free_mb from v$asm_diskgroup;
5、新增表空間 (手動條件資料檔案)
alter tablespace tablespace_name add datafile '/xxxx/xxxx/xxxxx_number.dbf' size 30g autoextend off;
6、自己寫了一個自動編輯增加資料檔案的擴容sql ,可以批量生成擴容指令碼(不保證百分百成功率,基本都沒問題)
set linesize 150 pagesize 900
SELECT 'alter tablespace ' || TABLESPACE_NAME || ' add datafile ''' ||
substr(file_name, 1, regexp_instr(file_name, '[[:digit:]]+\.') - 1) ||
TO_CHAR(substr(file_name,
regexp_instr(file_name, '[[:digit:]]+\.'),
instr(file_name, '.') -
regexp_instr(file_name, '[[:digit:]]+\.')) + B.RN) ||
'.dbf'' size ' || bytes / 1024 / 1024 || 'm autoextend off;'
FROM DBA_DATA_FILES,
(select rownum rn
from dba_objects
WHERE ROWNUM <= &number_of_datafile) B ----增加幾個資料檔案,比如3個
WHERE FILE_ID = (SELECT DISTINCT LAST_VALUE(FILE_ID)
OVER(ORDER BY to_number(substr(file_name, regexp_instr(file_name, '[[:digit:]]+\.'), instr(file_name, '.') - regexp_instr(file_name, '[[:digit:]]+\.'))) ASC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
FROM DBA_DATA_FILES
WHERE tablespace_name = '&tablespace_name'); --表空間名稱
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69950231/viewspace-2659967/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORA-1653: unable to extend table by 1024 in tablespace(oracle表空間滿了的解決方案)Oracle
- Oracle表空間Oracle
- oracle 表空間Oracle
- Oracle表空間切換路徑,解決硬碟滿導致的ORA-01653問題Oracle硬碟
- 增加oracle表空間Oracle
- oracle temp 表空間Oracle
- 【故障處理】ORA-1688: unable to extend table AUDSYS.AUD$UNIFIEDNifi
- oracle dg庫資料檔案空間不足Oracle
- Oracle資料庫閃回區空間不足Oracle資料庫
- table/index/LOBINDEX遷移表空間Index
- oracle 表移動表空間Oracle
- Oracle表移動表空間Oracle
- 磁碟空間不足
- oracle表空間的整理Oracle
- Oracle 批量建表空間Oracle
- Oracle清理SYSAUX表空間OracleUX
- MySQL InnoDB File-Per-Table表空間MySql
- Oracle Temp 表空間切換Oracle
- Oracle 表空間增加檔案Oracle
- Oracle OCP(49):表空間管理Oracle
- Oracle表空間收縮方案Oracle
- Oracle RMAN 表空間恢復Oracle
- Oracle新建使用者、表空間、表Oracle
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- Oracle的表空間quota詳解Oracle
- oracle臨時表空間相關Oracle
- oracle sql 表空間利用率OracleSQL
- Oracle OCP(47):表空間的建立Oracle
- 【Oracle 恢復表空間】 實驗Oracle
- 【TABLESPACE】Oracle表空間最佳實踐Oracle
- Ubuntu空間不足,如何擴容Ubuntu
- oracle 建立表空間和使用者Oracle
- Oracle建立表空間和使用者Oracle
- Oracle中新建表空間、使用者Oracle
- Oracle中表空間、表、索引的遷移Oracle索引
- ORACLE線上切換undo表空間Oracle
- oracle表空間增長趨勢分析Oracle
- Oracle OCP(46):表空間、段、區、塊Oracle