作者:Tim Hall
本文介绍 Oracle 数据库 21c 中的空间管理增强功能。
目录
- SecureFiles 收缩
- 临时表空间自动收缩
- 撤消表空间自动收缩
SecureFiles 收缩
在以前的版本中,我们只能通过移动 lob 来释放 lob 的空间,这对于大型 lob 段可能需要相当长的时间。
alter table tab1 move lob(lob_column_name) store as (tablespace new_ts);
在 Oracle 21c 中,我们可以在不影响访问的情况下对日志段进行碎片整理。这会释放未使用的空间,而不会产生完全移动 LOB 段的开销。
收缩可以针对特定列的 lob 段执行,也可以作为表级联操作的一部分执行:
alter table t1 modify lob (colb_column1) (shrink space);
alter table t1 shrink space cascade;
级联操作在以前的版本中有效,但 LOB 段未包含在级联中。
V$SECUREFILE_SHRINK
视图包含用于段的收缩操作的行。它在操作期间被更新,如果对同一段请求另一个收缩操作,它会被覆盖。
临时表空间自动收缩
顾名思义,Automatic Temporary Tablespace Shrink 特性将缩小临时表空间的大小以释放空间。如果需要更多,数据库可以先发制人地增加临时表空间。文档将此称为临时表空间大小自动调整。这允许我们让临时表空间根据需要扩展和收缩,而不会永久丢失磁盘空间。
在撰写本文时,文档仅限于新功能手册 此处,不过只是说明了功能,并没有使用手册或日志记录的详细信息。
感谢 Roger MacNicol 指出
V$SYSSTAT
视图中的相关统计数据:
column name format a40
select con_id,
name,
value
from v$sysstat
where name like '%TBS%';
CON_ID NAME VALUE
---------- ---------------------------------------- ----------
0 TBS Extension: tasks created 0
0 TBS Extension: tasks executed 0
0 TBS Extension: files extended 0
0 TBS Extension: bytes extended 0
0 TBS Shrink: tasks created 0
0 TBS Shrink: tasks executed 0
SQL>
此功能首次在 Oracle 19c 自治数据库中引入,但从 Oracle 21c 开始,它可用于企业版安装。请参阅 此处 的许可手册。
撤消表空间自动收缩
顾名思义,Automatic Undo Tablespace Shrink 功能将缩小 undo 表空间的大小以释放空间。过期的撤消段将被删除,如果可能,数据文件会被缩小。这允许我们让撤消表空间根据需要扩展和收缩,而不会永久丢失磁盘空间。
在撰写本文时,文档仅限于新功能手册 此处,它只是说它存在,没有使用控制或日志记录的详细信息。
感谢 Roger MacNicol 指出
V$SYSSTAT
视图中的相关统计数据:
column name format a40
select con_id,
name,
value
from v$sysstat
where name like '%TBS%';
CON_ID NAME VALUE
---------- ---------------------------------------- ----------
0 TBS Extension: tasks created 0
0 TBS Extension: tasks executed 0
0 TBS Extension: files extended 0
0 TBS Extension: bytes extended 0
0 TBS Shrink: tasks created 0
0 TBS Shrink: tasks executed 0
SQL>
根据许可手册 此处,此功能在企业版中可用。