最近在维护 Oracle 数据库时,发现业务表空间 DS_ZTFW 空间使用率已经达到 87% ,为了避免后续业务增长导致表空间不足,通过 Toad for Oracle 图形界面为表空间新增了两个数据文件。整个过程比较简单,整理记录如下。
| 数据库 | 日常是否经常手动增加数据文件 | 日常主要关注 |
|---|---|---|
| Oracle | ✅ 经常 | 表空间、Datafile、ASM |
| MySQL | ❌ 几乎不会 | 磁盘空间 |
| SQL Server | ❌ 很少 | 磁盘空间、数据库文件自动增长、事务日志 |
| PostgreSQL | ❌ 几乎不会 | 磁盘空间、WAL |
Oracle 需要管理表空间和 Datafile;MySQL、SQL Server、PostgreSQL 日常更多是关注数据库服务器磁盘空间,只有特殊场景才需要手动调整数据库文件。
Oracle 表空间(Tablespace)知识点
1、Oracle 表空间分两种
| 类型 | Smallfile | Bigfile |
|---|---|---|
| 默认类型 | ✅ 是 | ❌ 否 |
| Datafile 数量 | 多个 | 只能 1 个 |
| 单个 Datafile 最大(8KB Block) | 约 32GB(32767MB) | 约 32TB |
| 企业使用 | ⭐⭐⭐⭐⭐ 最常见 | ⭐ 少见 |
2、如何查看表空间类型?
SELECT tablespace_name, bigfile
FROM dba_tablespaces;
-
YES:Bigfile
-
NO:Smallfile
| 表空间类型 | 单个 Datafile 最大 | 扩容方式 |
|---|---|---|
| Smallfile | 约 32GB(8KB Block 的常见配置) | 新增 Datafile |
| Bigfile | 约 32TB(8KB Block 的常见配置) | 扩容唯一的 Datafile |
3、Toad 默认创建哪种?
默认创建 Smallfile Tablespace。
只有选择 Bigfile Tablespace 或执行:
CREATE BIGFILE TABLESPACE ...
才会创建 Bigfile。
4、生产环境一般使用哪种?
绝大多数 Oracle 生产库使用 Smallfile Tablespace。
扩容方式:
-
Datafile 未达到最大值 → 自动扩容(AUTOEXTEND)
-
Datafile 达到约 32GB → 新增 Datafile
5、一句话记忆
Smallfile:多个 Datafile,每个约 32GB;Bigfile:一个 Datafile,最大约 32TB。
这是 Oracle DBA 面试和日常运维中最常用、最好记的一条知识点。
一、扩容前检查
打开 Toad → Database → Tablespaces,查看各表空间使用情况。

本次扩容前:
| 表空间 | 已使用 | 总大小 | 空闲 | 使用率 |
|---|---|---|---|---|
| DS_ZTFW | 487GB | 560GB | 73.2GB | 87% |
虽然还有 73GB 空闲空间,但为了保证业务持续运行,提前进行扩容。
二、进入表空间管理
在 Toad 中:
Database
↓
Tablespaces
双击需要扩容的表空间 DS_ZTFW。

切换到
Files
页面。

点击左上角绿色 + 按钮新增 Datafile。
三、新增数据文件
由于数据库使用的是 ASM(+DATA) ,并开启了 Oracle Managed Files(OMF),因此无需填写数据文件名称。
本次填写参数如下:
| 参数 | 配置 |
|---|---|
| Add Oracle Managed File | √ |
| Size | 24 GB |
| Auto Extend | √ |
| Next Extent | 512 MB |
| Maximum Size | Unlimited |

确认无误后点击 OK。
UNLIMITED它的含义
不是:
无限大
而是:
不需要人为设置 MAXSIZE,
让 Oracle 增长到该 Datafile 能达到的最大值。
也就是说
对于 Smallfile:
MAXSIZE UNLIMITED
≈
MAXSIZE Smallfile 能达到的最大值
对于 Bigfile:
MAXSIZE UNLIMITED
≈
MAXSIZE Bigfile 能达到的最大值
这里的 UNLIMITED 并不是说文件真的能无限长,而是允许 Oracle 增长到该 Datafile 类型允许的理论上限。对于你们当前的 Smallfile,它最终仍然受 Smallfile 的最大限制约束,不会无限突破这个类型限制。
四、执行过程
点击 OK 后,Toad 出现:

Processing Script...

执行时间持续了几秒钟。
五、扩容结果
回到 Tablespaces 页面后可以看到:

扩容前:
| 总大小 | 空闲 |
|---|---|
| 560GB | 73.2GB |
扩容后:
| 总大小 | 空闲 |
|---|---|
| 608GB | 121GB |
可以看到:
560GB
+
24GB
+
24GB
========
608GB
说明 Oracle 已成功新增 两个 24GB 数据文件。
六、验证 Datafile
在 Files 页面可以看到新增的数据文件:
24GB
24GB
说明新增成功。
也可以执行 SQL 验证:
SELECT
file_id,
bytes/1024/1024/1024 AS size_gb,
autoextensible,
maxbytes/1024/1024/1024 AS max_gb
FROM dba_data_files
WHERE tablespace_name='DS_ZTFW'
ORDER BY file_id DESC;
查看最新增加的数据文件及其自动扩展配置。
七、注意事项
-
ASM + OMF 环境下无需指定数据文件名,Oracle 会自动创建。
-
建议开启 AutoExtend ,并合理设置 Next Extent(如 512MB 或 1GB)。
-
如果点击 OK 后出现 Processing Script,不要重复点击,先等待执行完成,再刷新查看结果,否则容易重复增加数据文件。
-
扩容完成后,应再次检查表空间使用率和新增的数据文件是否符合预期。
八、总结
本次通过 Toad 图形界面 成功为 DS_ZTFW 表空间新增了两个 24GB 的 ASM 数据文件,使表空间容量由 560GB 扩容至 608GB ,空闲空间由 73.2GB 增加至 121GB,满足了后续业务数据增长需求。
整个过程无需编写 SQL,适合日常运维人员通过图形界面快速完成 Oracle 表空间扩容操作。