临时表空间组不能显式创建,只能通过ALTER TABLESPACE指定新组名隐式生成;组内至少需一个临时表空间,删光成员后组自动消失;组名可直接用于用户或数据库默认临时表空间设置,实现轮询分配与容错。

临时表空间组不能显式创建,只能通过分配成员间接生成
Oracle 中没有 CREATE TABLESPACE GROUP 语句。临时表空间组是“隐式存在”的——当你第一次把某个临时表空间加入一个新组名时,该组就自动创建了。
常见错误是试图执行类似 CREATE TABLESPACE GROUP temp_grp 的命令,这会报错 ORA-00922: missing or invalid option。
- 只要用
ALTER TABLESPACE ... TABLESPACE GROUP ...指定一个尚不存在的组名,组就立即诞生 - 组名不能与任何已存在的临时表空间同名(否则
ALTER会失败) - 组内至少要有一个临时表空间;删光所有成员后,组自动消失
给临时表空间指定组名:用 ALTER TABLESPACE 而非 CREATE
必须先有临时表空间,再把它“划入”某个组。比如你已建好 temp1 和 temp2:
ALTER TABLESPACE temp1 TABLESPACE GROUP temp_grp;<br>ALTER TABLESPACE temp2 TABLESPACE GROUP temp_grp;
这两条执行后,dba_tablespace_groups 视图里就会出现 temp_grp 记录,并列出两个成员。
- 如果
temp1原本属于另一个组(如old_grp),这条ALTER会把它从旧组移出,再加入新组 - 同一时刻一个临时表空间只能属于一个组(不是多对多关系)
- 组名区分大小写,但 Oracle 默认转为大写存储,建议全程用大写避免混淆
把用户或数据库默认临时表空间设为组名
组名可以直接当表空间名用。例如分配给用户:
ALTER USER scott TEMPORARY TABLESPACE temp_grp;
或者设为数据库级默认:
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp_grp;
这样后续新建用户没显式指定临时表空间时,就自动使用这个组。
- 用户实际使用的临时表空间由 Oracle 自动在组内轮询分配,缓解单个临时表空间争用
- 如果组内某个表空间不可用(比如文件损坏、offline),Oracle 会跳过它,用其余可用成员
- 注意:
DBA_TEMP_FILES查不到组信息,得查dba_tablespace_groups
删除组的唯一方式:清空它的所有成员
没有 DROP TABLESPACE GROUP。要删掉 temp_grp,只能逐个把成员移出:
ALTER TABLESPACE temp1 TABLESPACE GROUP '';<br>ALTER TABLESPACE temp2 TABLESPACE GROUP '';
空字符串 '' 表示“不属于任何组”,执行后组自动消失。
- 移出操作不会删除临时表空间本身,只是解除归属关系
- 如果误删了最后一个成员,组立刻消失,但原表空间仍可独立使用(只是不再属于组)
- 检查是否残留:查
dba_tablespace_groups,结果为空即表示组已不存在
TEMPORARY TABLESPACE 参数,就必须确保组内始终有至少一个在线且可写的成员,否则相关 SQL(如大排序)会直接报 ORA-01652: unable to extend temp segment。


















