在 Linux 上Oracle 数据库扩容,通常指以下几类场景之一。我先按常见扩容类型给你梳理,你可以对照自己的情况操作。
SELECT
tablespace_name,
file_name,
bytes/1024/1024 AS size_mb,
maxbytes/1024/1024 AS max_mb,
autoextensible
FROM dba_data_files;
或查看使用率:
SELECT
tablespace_name,
ROUND(SUM(bytes)/1024/1024,2) AS total_mb,
ROUND(SUM(bytes - NVL(free.bytes,0))/1024/1024,2) AS used_mb
FROM dba_data_files a,
dba_free_space b
WHERE a.file_id = b.file_id(+)
GROUP BY tablespace_name;
ALTER TABLESPACE USERS
ADD DATAFILE '/u01/oradata/ORCL/users02.dbf'
SIZE 2G
AUTOEXTEND ON
NEXT 512M
MAXSIZE 30G;
✅ 不影响现有数据
✅ 最安全
ALTER DATABASE DATAFILE '/u01/oradata/ORCL/users01.dbf'
RESIZE 10G;
⚠ 注意:
ALTER DATABASE DATAFILE '/u01/oradata/ORCL/users01.dbf'
AUTOEXTEND ON
NEXT 512M
MAXSIZE UNLIMITED;
如果 df -h 显示空间不足:
df -h
# 查看
lsblk
vgdisplay
lvdisplay
# 扩展逻辑卷
lvextend -L +20G /dev/vg_oracle/lv_oradata
# 扩展文件系统
resize2fs /dev/vg_oracle/lv_oradata # ext4
# 或
xfs_growfs /u01 # xfs
ALTER DISKGROUP DATA ADD DISK '/dev/raw/raw5';
查看:
SELECT name, total_mb, free_mb FROM v$asm_diskgroup;
ALTER TABLESPACE TEMP
ADD TEMPFILE '/u01/oradata/ORCL/temp02.dbf'
SIZE 2G AUTOEXTEND ON;
ALTER DATABASE ADD LOGFILE GROUP 4
('/u01/oradata/ORCL/redo04.log') SIZE 512M;
df -h
free -m
ls -l /u01/oradata
Oracle:
ARCHIVE LOG LIST; -- 归档是否满
请告诉我:
我可以直接给你一步一步可执行命令。