最近在维护 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 表空间扩容操作。
以上就是生产环境oracle表空间扩容的实战指南的详细内容,更多关于生产环境oracle表空间扩容的资料请关注代码网其它相关文章!
发表评论