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
- 手工建庫後表空間資料檔案非自動擴充套件引起的錯誤:ORA-01653: unable to extend* in tablespace*套件
- oracle 表空間 不足時如何處理Oracle
- UNDO表空間不足解決方法
- Oracle批次修改使用者表table的表空間Oracle
- sysaux 表空間不足問題處理UX
- system表空間不足的問題分析
- TEMP表空間不足解決 - temp group
- [原創] 當表空間不足時,Oracle是這樣管理RecyclebinOracle
- table/index/LOBINDEX遷移表空間Index
- 表、索引遷移表空間alter table move索引
- Oracle表空間Oracle
- system表空間不足的問題分析(二)
- 系統臨時表空間不足問題
- dataguard之邏輯備庫表空間不足
- 【故障處理】ORA-1688: unable to extend table AUDSYS.AUD$UNIFIEDNifi
- Oracle表空間切換路徑,解決硬碟滿導致的ORA-01653問題Oracle硬碟
- MySQL InnoDB File-Per-Table表空間MySql
- 如何更改table及index的表空間Index
- oracle dg庫資料檔案空間不足Oracle
- Oracle資料庫閃回區空間不足Oracle資料庫
- 索引表空間不足的幾個處理思路索引
- oracle temp 表空間Oracle
- 增加oracle表空間Oracle
- oracle undo 表空間Oracle
- oracle users 表空間Oracle
- Oracle表空間管理Oracle
- oracle建立表空間Oracle
- Oracle 表空間管理Oracle
- oracle表空間操作Oracle
- ORACLE MOVE表空間Oracle
- ORACLE表空間概述Oracle
- Oracle表空間命令Oracle
- Oracle 表空間回收Oracle
- 從system/sysaux空間轉移TABLE&Index到其它表空間UXIndex
- Oracle表移動表空間Oracle
- oracle 表移動表空間Oracle
- ASM磁碟組空間不足ASM