表空间不足时须先核查表空间状态、数据文件自动扩展属性及磁盘剩余空间,再选择启用AUTOEXTEND、RESIZE现有文件或ADD DATAFILE;UNDOTBS1等系统表空间需单独处理,避免ORA-01653/ORA-30036错误。
表空间不足时,不能只靠“加文件”硬扛,得先看清楚是哪个表空间、当前文件是否已启自动扩展、磁盘还有没有余量——否则可能执行完命令仍报
或
。
查清表空间真实使用率和文件状态
很多 DBA 直接跳到扩容命令,结果发现
里没记录(比如刚建的空表空间),或者
显示
却误以为已开启。必须组合查:
用
确认表空间是
,不是
或
用
查每个文件是否可扩、当前上限是多少
用
检查数据文件所在路径的挂载点剩余空间,例如
剩余不足 2G,那设
就会卡在扩展中途
启用或修改已有数据文件的 AUTOEXTEND
这是最快见效的方式,但要注意:Oracle 默认创建的数据文件不带自动扩展,必须显式开启。执行前务必确认磁盘有足够连续空间。
启用自动扩展(无上限):
限制最大值更安全(推荐):
,避免单个文件失控膨胀
如果执行报错
,说明文件路径不存在或权限不对;报
则可能是该文件已被设为只读或脱机
向表空间 ADD DATAFILE(新增物理文件)
当现有文件已达磁盘分区上限、或策略要求分散 I/O(如把新文件放到 SSD 路径),就该加文件。注意路径必须是数据库能写入的目录,且文件名不能重复。
oracle知识库
oracle知识库下载
下载
基础命令:
带自动扩展更稳妥:
加完立刻验证:
,确认新文件出现在列表里且大小匹配
别漏掉权限检查:Linux 下 Oracle 用户必须对
有写权限,否则报
UNDO 表空间要单独处理
这类系统表空间不能直接
(除非是 12c+ 多租户下特定配置),出
时优先调大现有文件或启用自动扩展。
查 UNDO 使用:
,重点看
和
占比
扩 UNDO 文件:
或启用扩展:
顺手调
:
,防止长事务反复覆盖导致空间无法复用
真正容易被忽略的是:自动扩展虽方便,但每次触发增长都要做文件系统分配和头块更新,高频小增长(如
)反而引发 I/O 尖刺;而一次性设太大(如
)又可能掩盖磁盘告警。务实做法是按业务峰值预估 2–3 周用量,设
,
留 20% 缓冲,并配监控脚本定期查
中
和
是否接近阈值。
ora-01653ora-30036dba_free_spacedba_data_filesAUTOEXTENSIBLE = 'NO'SELECT tablespace_name, status FROM dba_tablespacesONLINEREAD ONLYOFFLINESELECT file_name, autoextensible, bytes/1024/1024 AS size_mb, maxbytes/1024/1024 AS max_mb FROM dba_data_files WHERE tablespace_name = 'YOUR_TABLESPACE_NAME'df -h/u01/oradataMAXSIZE 10GALTER DATABASE DATAFILE '/u01/oradata/orcl/users01.dbf' AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITEDALTER DATABASE DATAFILE '/u01/oradata/orcl/users01.dbf' AUTOEXTEND ON NEXT 50M MAXSIZE 4096MORA-01111ORA-01274ALTER TABLESPACE USERS ADD DATAFILE '/u02/oradata/orcl/users02.dbf' SIZE 500MALTER TABLESPACE USERS ADD DATAFILE '/u02/oradata/orcl/users02.dbf' SIZE 500M AUTOEXTEND ON NEXT 100M MAXSIZE 2048MSELECT file_name, tablespace_name, bytes/1024/1024 FROM dba_data_files WHERE tablespace_name = 'USERS'/u02/oradata/orcl/ORA-01119UNDOTBS1ADD DATAFILEORA-30036SELECT tablespace_name, status, sum(bytes)/1024/1024 FROM dba_undo_extents GROUP BY tablespace_name, statusACTIVEUNEXPIREDALTER DATABASE DATAFILE '/u01/oradata/orcl/undotbs01.dbf' RESIZE 2048MALTER DATABASE DATAFILE '/u01/oradata/orcl/undotbs01.dbf' AUTOEXTEND ON NEXT 256M MAXSIZE 4096Mundo_retentionALTER SYSTEM SET undo_retention = 1800 SCOPE=BOTHNEXT 1MMAXSIZE 100GNEXT 100–500MMAXSIZEdba_data_filesautoextensiblemaxbytes