oracle 12c 中所有永久表空间强制本地管理,dbca 模板无“本地/字典管理”选项;仅可配置 assm(auto/manual)、自动扩展、路径及初始大小等,验证需查 dba_tablespaces 中 extent_management='local' 且 segment_space_management='auto'。
oracle 12c 中无法通过 dbca 自定义模板“配置本地管理表空间”——因为所有新建表空间默认就是本地管理的,dbca 模板里根本没有这个开关。
从 Oracle 12c 开始,extent_management 只能是 LOCAL,字典管理(DICTIONARY)已被彻底废弃。DBCA 的模板只控制“是否启用 ASSM”“数据文件路径/大小/自动扩展”等,不提供“选本地 or 字典”的选项——它压根不让你选。
为什么 DBCA 模板里找不到“本地管理”设置项
Oracle 12c 强制所有永久表空间使用本地管理:
-
CREATE TABLESPACE语句中省略EXTENT MANAGEMENT LOCAL也默认生效,显式写上只是为可读性 - DBCA 创建数据库时,生成的建表空间脚本(如
tools01.dbf)必然含EXTENT MANAGEMENT LOCAL - 模板中若出现“段空间管理”相关配置,那指的是
SEGMENT SPACE MANAGEMENT(AUTO或MANUAL),不是 extent 管理方式
DBCA 模板中真正影响表空间行为的关键参数
你在 DBCA 自定义模板里能调的,其实是这些:
-
SEGMENT SPACE MANAGEMENT AUTO:必须勾选 —— 启用 ASSM,否则后续ALTER TABLE ... SHRINK SPACE会报错ORA-10635 -
AUTOEXTEND ON NEXT 128M MAXSIZE UNLIMITED:建议开启,避免因空间耗尽导致 DML 失败;但注意单个数据文件上限(如 8K block size → 最大 32GB) - 数据文件路径:确保目标目录有足够磁盘空间、Oracle 用户有写权限;生产环境严禁指向
/tmp或根分区 - 初始大小(
SIZE):不要设过小(如10M)——频繁自动扩展会引发 I/O 小碎片,建议按业务预估设为1G起
验证你用 DBCA 创建的表空间是否符合预期
DBCA 完成后,立刻连库执行:
SELECT tablespace_name, extent_management, segment_space_management
FROM dba_tablespaces
WHERE tablespace_name IN ('USERS', 'TOOLS', 'YOUR_CUSTOM_TS');
正确结果必须是:
-
EXTENT_MANAGEMENT = 'LOCAL'(固定值,无需操作) -
SEGMENT_SPACE_MANAGEMENT = 'AUTO'(这才是你该在 DBCA 模板里确认的)
如果看到 'MANUAL',说明模板里漏掉了 ASSM 设置,需手工重建表空间或用 ALTER TABLESPACE ... SEGMENT SPACE MANAGEMENT AUTO(仅限空表空间)。
真正容易被忽略的是:DBCA 模板修改后不会自动生效于已存在的数据库;每次新建库才读取模板。改完模板,务必用新模板重新运行 DBCA,而不是试图“刷新”旧库。











