在 Linux 上 Oracle 数据库扩容,通常分三种场景,下面按最常见的情况给你讲清楚(以 Linux + Oracle 11g/12c/19c 为例):
适用于:数据文件满了,需要增加容量
SELECT
a.tablespace_name,
total_bytes/1024/1024 "Total(MB)",
free_bytes/1024/1024 "Free(MB)"
FROM
dba_tablespace_usage_metrics a;
ALTER TABLESPACE USERS
ADD DATAFILE '/u01/oradata/ORCL/users02.dbf'
SIZE 2G
AUTOEXTEND ON
NEXT 100M
MAXSIZE 10G;
ALTER DATABASE DATAFILE '/u01/oradata/ORCL/users01.dbf'
RESIZE 5G;
适用于:磁盘满了,无法再建数据文件
# 查看卷组
vgdisplay
# 扩展逻辑卷(例如 /dev/oracle_vg/oracle_lv)
lvextend -L +50G /dev/oracle_vg/oracle_lv
# 扩展文件系统
resize2fs /dev/oracle_vg/oracle_lv
# 或 xfs
xfs_growfs /u01
fdisk /dev/sdb
mkfs.ext4 /dev/sdb1
mount /dev/sdb1 /u01/oradata
然后修改 /etc/fstab 防止重启失效。
适用于:使用 ASM 存储
-- 查看磁盘组
SELECT name, total_mb, free_mb FROM v$asm_diskgroup;
-- 添加磁盘
ALTER DISKGROUP DATA ADD DISK '/dev/raw/raw3';
ALTER TABLESPACE TEMP
ADD TEMPFILE '/u01/oradata/ORCL/temp02.dbf'
SIZE 2G;
SELECT * FROM dba_data_files;
SELECT * FROM dba_temp_files;
✅ 确保 Oracle 用户对目录有写权限
✅ 生产环境建议在低峰期操作
✅ 大表空间避免单个数据文件过大(建议 ≤ 32G)
✅ 开启 AUTOEXTEND 要设 MAXSIZE,防止撑爆磁盘
如果你能告诉我:
df -h 结果我可以给你精确的一步一步命令。