在 Ubuntu + Oracle(数据库) 环境下“扩容”,通常分为 操作系统层扩容 和 Oracle 数据库层扩容 两部分。下面按常见场景给你一个完整思路。
先明确是 磁盘满了 还是 Oracle 表空间满了。
df -h
SELECT tablespace_name, bytes/1024/1024 MB, maxbytes/1024/1024 MAX_MB
FROM dba_data_files;
lsblk
如果看到磁盘变大了,但分区没变:
sudo growpart /dev/sda 1
sudo resize2fs /dev/sda1
sudo xfs_growfs /
pvcreate /dev/sdb
vgextend ubuntu-vg /dev/sdb
lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
resize2fs /dev/ubuntu-vg/ubuntu-lv
SELECT
tablespace_name,
ROUND(SUM(bytes)/1024/1024) AS size_mb
FROM dba_data_files
GROUP BY tablespace_name;
ALTER TABLESPACE USERS
ADD DATAFILE '/u01/oradata/ORCL/users02.dbf'
SIZE 10G
AUTOEXTEND ON
NEXT 1G
MAXSIZE 30G;
ALTER DATABASE DATAFILE '/u01/oradata/ORCL/users01.dbf'
RESIZE 20G;
ALTER DISKGROUP DATA ADD DISK '/dev/oracleasm/disks/DISK2';
✅ Oracle 数据文件必须放在 已扩容的文件系统
✅ 不要直接删 .dbf 文件
✅ 云服务器扩容后必须 growpart
✅ 表空间满 ≠ 磁盘满
你可以告诉我:
我可以直接给你 一步步命令。