BIGFILE表空间必须显式声明CREATE BIGFILE TABLESPACE,关键字顺序不可颠倒,仅支持一个LOCAL管理且AUTO段空间管理的数据文件,不支持ADD DATAFILE、字典管理或手动段管理。
必须显式写 bigfile,否则哪怕只建一个文件,它还是 smallfile 类型。
CREATE BIGFILE TABLESPACE 语法不能颠倒顺序
关键字 BIGFILE 必须紧接在 CREATE 之后、TABLESPACE 名称之前,且只能指定一个 DATAFILE。常见错误是写成 CREATE TABLESPACE ... BIGFILE 或漏掉 BIGFILE,结果建出来仍是 SMALLFILE,查 DBA_TABLESPACES.BIGFILE 列返回 NO。
-
CREATE BIGFILE TABLESPACE tbs_big DATAFILE '/u01/oradata/db/tbs_big.dbf' SIZE 50G;✅ 正确 -
CREATE TABLESPACE tbs_big BIGFILE DATAFILE ...❌ 报ORA-01972或静默失败 -
CREATE BIGFILE TABLESPACE tbs_big DATAFILE 'f1.dbf', 'f2.dbf' ...❌ 报ORA-30974
BIGFILE 表空间强制依赖 LOCAL 管理和 AUTO 段空间管理
不支持字典管理(DICTIONARY),也不允许手动段空间管理(MANUAL)。如果省略相关子句,Oracle 可能拒绝初始化文件(BYTES 显示为 0)或报错 ORA-01644。
- 必须显式写
EXTENT MANAGEMENT LOCAL(10g+ 虽默认,但BIGFILE不继承隐式行为) - 必须用
SEGMENT SPACE MANAGEMENT AUTO;MANUAL会直接报ORA-03242 - 不能指定
MINIMUM EXTENT,该参数仅对字典管理有效
扩容只能操作唯一数据文件,不能 ADD DATAFILE
BIGFILE 表空间在 DBA_DATA_FILES 中永远只有一行,FILE_ID 固定为 1。误执行 ALTER TABLESPACE ... ADD DATAFILE 会立即报 ORA-32771;想扩容只能对那个单文件做 RESIZE 或依赖 AUTOEXTEND。
- 正确扩容:
ALTER DATABASE DATAFILE '/u01/oradata/db/tbs_big.dbf' RESIZE 80G; - 错误操作:
ALTER TABLESPACE tbs_big ADD DATAFILE ...→ORA-32771 -
MAXSIZE建议设具体值(如200G),避免UNLIMITED触发文件系统限制(如 ext4 默认 16TB)导致ORA-01144
别把默认表空间设成 BIGFILE
执行 ALTER DATABASE DEFAULT TABLESPACE tbs_big 后,所有未显式指定表空间的用户、临时段、甚至部分 Oracle 内部对象都会挤进这个单文件。这不是简化,是集中风险点。
- OLTP 场景下易引发恢复慢、RMAN 备份片过大、闪回日志压力集中
- 无法在线收缩(
SHRINK SPACE不支持,RESIZE也不能小于已用空间) - 备份工具若未适配大文件(如旧版 RMAN 补丁集),可能在恢复阶段才暴露
ORA-01274
真正需要 BIGFILE 的时刻很窄:你确认单个文件要超 100GB、管理文件数量比 IO 效率更重要、且备份/容灾链路已验证过单大文件路径。其他时候,老实用 SMALLFILE + 合理分片更稳。











