错误信息 | ORA-01653: unable to extend table MST_AAAAA by 8192 in tablespace XXX_SYS01 | |||||||
MST_AAAAA:表名 | ||||||||
XXX_SYS01:表空间名 | ||||||||
意思是说XXX_SYS01 表空间不足了 | ||||||||
表空间不足的问题一般有两种情况: | ||||||||
1、表空间的自动扩展功能没有开 | ||||||||
2、空间确实不足了,已经达到了自动扩展的上限。 | ||||||||
解决方案 | ||||||||
1、打开表空间的自动扩容 | ||||||||
SELECT | ||||||||
file_id 文件ID | ||||||||
, file_name 文件路径 | ||||||||
, tablespace_name 表空间名 | ||||||||
, autoextensible 是否扩容 --YES:可自动扩容;NO:不能自动扩容 | ||||||||
, increment_by --用作自动扩展增量的表空间块数 | ||||||||
FROM | ||||||||
dba_data_files | ||||||||
WHERE | ||||||||
tablespace_name = 'XXX_SYS01' | ||||||||
ORDER BY | ||||||||
file_id asc; | ||||||||
文件ID | 文件路径 | 表空间名 | 是否扩容 | INCREMENT_BY | ||||
9 | XXXX01 | XXX_SYS01 | YES | 1280 | ||||
10 | XXXX02 | XXX_SYS01 | YES | 1280 | ||||
2、增大数据文件的大小 或者 增加数据文件(windows环境下,一个文件最大size是32G) | ||||||||
2-1、增大数据文件的大小 | ||||||||
ALTER database datafile XXXX01 size ***M; | ||||||||
2-2、增加数据文件 | ||||||||
ALTER tablespace XXX_SYS01 --表空间名称 | ||||||||
ADD datafile XXXX01 size *** M -- XXXX01:'全路径的数据文件名称' | ||||||||
autoextend on maxsize 32G; | ||||||||
注意:要确认磁盘空间足够 | ||||||||
扩展学习 | ||||||||
1、删除表空间数据文件 | ||||||||
ALERT ablespace 表空间名称 | ||||||||
DROP datafile '全路径的数据文件名称' | ||||||||
2、查询表空间 大小 使用率等 | ||||||||
SELECT | ||||||||
a.tablespace_name "表空间名" | ||||||||
, b.tot_grootte_mb "表空间大小(M)" | ||||||||
, b.tot_grootte_mb - a.total_free_bytes "已使用空间(M)" | ||||||||
, TO_CHAR( | ||||||||
ROUND( | ||||||||
(b.tot_grootte_mb - a.total_free_bytes) / b.tot_grootte_mb * 100 | ||||||||
, 2 | ||||||||
) | ||||||||
, '999.999' | ||||||||
) "使用率%" | ||||||||
, a.total_free_bytes "空闲空间(M)" | ||||||||
, a.max_bytes "最大空间(M)" | ||||||||
FROM | ||||||||
( | ||||||||
SELECT | ||||||||
tablespace_name | ||||||||
, ROUND(SUM(bytes) / (1024 * 1024), 2) total_free_bytes | ||||||||
, ROUND(MAX(bytes) / (1024 * 1024), 2) max_bytes | ||||||||
FROM | ||||||||
sys.dba_free_space | ||||||||
GROUP BY | ||||||||
tablespace_name | ||||||||
) a | ||||||||
, ( | ||||||||
SELECT | ||||||||
tablespace_name | ||||||||
, ROUND(SUM(bytes) / (1024 * 1024), 2) tot_grootte_mb | ||||||||
FROM | ||||||||
sys.dba_data_files | ||||||||
GROUP BY | ||||||||
tablespace_name | ||||||||
) b | ||||||||
WHERE | ||||||||
b.tablespace_name = a.tablespace_name | ||||||||
-- a.tablespace_name = 'XXX_SYS01' -- 表空间物理名 | ||||||||
ORDER BY | 4 DESC; | |||||||
表空间名 | 表空间大小(M) | 已使用空间(M) | 使用率% | 空闲空间(M) | 最大空间(M) | |||
XXX_SYS01 | 1310400 | 1249597.19 | 95.36 | 60802.81 | 3136 | |||
AAA_01 | 6096 | 4424 | 72.57 | 1672 | 171 | |||
BBB_01 | 6096 | 3081.5 | 50.55 | 3014.5 | 2127 | |||
CCC_01 | 675840 | 245430.37 | 36.31 | 430409.63 | 3968 | |||
DDD_01 | 407504 | 58729.06 | 14.41 | 348774.94 | 3968 | |||
EEE_01 | 93400 | 6897.62 | 7.39 | 86502.38 | 3968 | |||
FFF_01 | 1024 | 69.62 | 6.80 | 954.38 | 954.38 | |||
SYS_01 | 100 | 6.06 | 6.06 | 93.94 | 93.94 | |||
3、查询某一个表的信息 | ||||||||
select | ||||||||
owner 表领域 | ||||||||
, t.segment_name 表名 | ||||||||
, t.segment_type 表属性 -- (参考 表没有分区:TABLE;有分区:TABLE PARTITION) | ||||||||
, sum(t.bytes / 1024 / 1024) "使用空间(M)" | ||||||||
from | ||||||||
dba_segments t | ||||||||
where | ||||||||
1 = 1 | ||||||||
--AND t.segment_type = 'TABLE' | ||||||||
AND t.segment_name = 'MST_AAAAA' | ||||||||
group by | ||||||||
owner | ||||||||
, t.segment_name | ||||||||
, t.segment_type; | ||||||||
表领域 | 表名 | 表属性 | 使用空间(M) | |||||
IF_A | MST_AAAAA | TABLE | 0.125 |
Oracle表空间 ORA-01653
于 2022-05-24 20:08:32 首次发布