在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中實現自動擴展和收縮數據庫空間的功能。