作者:Tim Hall


本文介绍 Oracle 数据库 21c 中的空间管理增强功能。


目录

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>

根据许可手册 ​​此处​​,此功能在企业版中可用。

此功能首次在 Oracle 19c 自治数据库中引入,但从 Oracle 21c 开始,它可用于企业版安装。请参阅 ​​此处​​ 的许可手册。