Уплотнение данных.
Уплотнение устоявшихся данных возможно из - за того, что при создании таблиц устанавливается параметр PCTFREE равный, например 10 %. Если на момент полного импорта данных установить PCTFREE =1, то данные уплотнятся на 9 % (а если были удаления данных, то и больше), что положительно скажется на скорости выборки данных, и при том же значении размера таблицы свободного места в ней будет больше. После импорта нужно восстановить старые значения PCTFREE.
Итак, по порядку:
CREATE TABLE pct_free_tables as
SELECT owner,table_name,pct_free
FROM dba_tables
WHERE owner NOT IN ('SYS','SYSTEM','TOAD');
DECLARE
v_cursor number;
CURSOR c_tables is
SELECT owner,table_name,pct_free FROM pct_free_tables;
BEGIN
v_cursor:=DBMS_SQL.open_cursor;
FOR c_tbl IN c_tables LOOP
BEGIN
DBMS_SQL.parse(v_cursor,'alter table '||c_tbl.owner||'.'||c_tbl.table_name||
' PCTFREE 1',dbms_sql.v7);
DBMS_OUTPUT.PUT_LINE(c_tbl.owner||'.'||c_tbl.table_name);
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ups..except on '||c_tbl.owner||'.'||c_tbl.table_name);
END;
END LOOP;
DBMS_SQL.CLOSE_CURSOR(v_cursor);
END;
DECLARE
v_cursor number;
CURSOR c_tables is
SELECT owner,table_name,pct_free FROM pct_free_tables;
BEGIN
v_cursor:=DBMS_SQL.open_cursor;
FOR c_tbl IN c_tables LOOP
BEGIN
DBMS_SQL.parse(v_cursor,'alter table '||c_tbl.owner||'.'||c_tbl.table_name||
' PCTFREE '||c_tbl.pct_free,dbms_sql.v7);
DBMS_OUTPUT.PUT_LINE(c_tbl.owner||'.'||c_tbl.table_name);
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ups..except on '||c_tbl.owner||'.'||c_tbl.table_name);
END;
END LOOP;
DBMS_SQL.CLOSE_CURSOR(v_cursor);
END;