在PL/SQL中,可以使用DBMS_SPACE package来自动扩展和收缩数据库。
DECLARE
v_seg_owner VARCHAR2(30) := 'SCOTT';
v_seg_name VARCHAR2(30) := 'EMPLOYEES';
BEGIN
DBMS_SPACE.RESIZE_SEGMENT(
segment_owner => v_seg_owner,
segment_name => v_seg_name,
relative_extent_size => 2,
shrink => FALSE
);
END;
在上面的代码中,我们使用RESIZE_SEGMENT procedure来扩展SCOTT用户下的EMPLOYEES表的空间,将其大小增加2个相对大小的extent。
DECLARE
v_seg_owner VARCHAR2(30) := 'SCOTT';
v_seg_name VARCHAR2(30) := 'EMPLOYEES';
BEGIN
DBMS_SPACE.SHRINK_SEGMENT(
segment_owner => v_seg_owner,
segment_name => v_seg_name,
compact => TRUE
);
END;
在上面的代码中,我们使用SHRINK_SEGMENT procedure来收缩SCOTT用户下的EMPLOYEES表的空间,并使用compact参数来指定是否要压缩表。
通过使用DBMS_SPACE package中的相应procedure,您可以在PL/SQL中实现自动扩展和收缩数据库空间的功能。