Oracle 19c RAC 默认表空间类型
默认是 SMALLFILE 表空间(普通表空间),不是 BIGFILE。
这与单机 Oracle 完全一致,RAC 环境并不会改变这个默认行为。
验证方法
sql
-- 查看数据库级默认表空间类型
SELECT PROPERTY_NAME, PROPERTY_VALUE
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME = 'DEFAULT_TBS_TYPE';
输出:
PROPERTY_NAME PROPERTY_VALUE
----------------------- ----------------
DEFAULT_TBS_TYPE SMALLFILE
三种创建表空间的写法对比
sql
-- 1. 不指定,使用数据库默认(SMALLFILE)
CREATE TABLESPACE TBS_TEST
DATAFILE '+DATA' SIZE 10G AUTOEXTEND ON;
-- 实际类型: SMALLFILE
-- 2. 显式指定 SMALLFILE
CREATE SMALLFILE TABLESPACE TBS_TEST
DATAFILE '+DATA' SIZE 10G AUTOEXTEND ON;
-- 3. 显式指定 BIGFILE
CREATE BIGFILE TABLESPACE TBS_TEST
DATAFILE '+DATA' SIZE 10G AUTOEXTEND ON;
修改数据库默认类型
如果希望以后所有新建表空间都默认为 BIGFILE:
sql
-- 修改默认类型为 BIGFILE
ALTER DATABASE SET DEFAULT BIGFILE TABLESPACE;
-- 改回 SMALLFILE
ALTER DATABASE SET DEFAULT SMALLFILE TABLESPACE;
-- 验证
SELECT PROPERTY_NAME, PROPERTY_VALUE
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME = 'DEFAULT_TBS_TYPE';
⚠️ 此设置只影响新建表空间,已存在的表空间不受影响。
SMALLFILE vs BIGFILE 选型对比
| 特性 | SMALLFILE(默认) | BIGFILE |
|---|---|---|
| 数据文件数量 | 一个表空间最多 1022 个数据文件 | 只能有 1 个数据文件 |
| 单文件最大 | 32GB(8K 块大小) | 32TB(8K 块大小) |
| 表空间最大 | 约 32TB | 128TB |
| 管理复杂度 | 多文件,扩容方便 | 单文件,管理简单 |
| 备份/恢复 | 文件级并行备份 | 块级并行(RMAN section size) |
| DBWR 性能 | 多文件写入分散 IO | 单文件可能成瓶颈 |
| RAC 兼容性 | 完全支持 | 完全支持(推荐配合 ASM) |
| OMF 支持 | 支持 | 支持 |
| 重命名/移动 | 单个文件级别 | 整个表空间级别 |
RAC 环境下的实战建议
✅ 推荐使用 BIGFILE 的场景
sql
CREATE BIGFILE TABLESPACE TBS_DATA_LARGE
DATAFILE '+DATA' SIZE 100G
AUTOEXTEND ON NEXT 10G MAXSIZE 4T;
适用场景:
- 数据仓库 / 大表归档库(单表空间需要 TB 级别)
- 配合 ASM 使用(ASM 自动条带化,已避免 IO 集中)
- OMF(Oracle Managed Files)环境,简化文件管理
- 单一用途表空间(如 LOB 存储、历史分区数据)
✅ 推荐使用 SMALLFILE 的场景
sql
CREATE TABLESPACE TBS_DATA
DATAFILE '+DATA' SIZE 10G AUTOEXTEND ON NEXT 1G MAXSIZE 32G,
'+DATA' SIZE 10G AUTOEXTEND ON NEXT 1G MAXSIZE 32G;
适用场景:
- OLTP 高并发系统(多文件分散 DBWR IO 压力)
- 小型数据库(< 1TB)
- 传统文件系统(非 ASM,文件大小受 OS 限制)
- 需要精细化备份策略(按文件并行备份)
RAC 特别提醒
在 19c RAC 中创建表空间时:
sql
-- ❌ 错误写法:指定本地路径
CREATE TABLESPACE TBS_TEST
DATAFILE '/u01/oradata/file01.dbf' SIZE 10G;
-- RAC 中各节点访问的路径不一致,会出错
-- ✅ 正确写法:使用 ASM 磁盘组
CREATE TABLESPACE TBS_TEST
DATAFILE '+DATA' SIZE 10G AUTOEXTEND ON;
-- ✅ 或使用 OMF(推荐)
ALTER SYSTEM SET DB_CREATE_FILE_DEST='+DATA';
CREATE TABLESPACE TBS_TEST; -- 简洁,路径自动管理
一句话结论
Oracle 19c RAC 默认创建的是 SMALLFILE 表空间 。如果你需要 BIGFILE,必须显式写
CREATE BIGFILE TABLESPACE,或者通过ALTER DATABASE SET DEFAULT BIGFILE TABLESPACE修改全局默认值。