Фрагментация таблиц в Oracle - Create table as select
ОГЛАВЛЕНИЕ
Страница 3 из 5
Опция: 2 "Create table as select"
SQL> CREATE TABLE BIG2 AS SELECT * FROM BIG1;
TABLE created.
SQL> DROP TABLE BIG1 PURGE;
TABLE dropped.
SQL> RENAME BIG2 TO BIG1;
TABLE renamed.
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SCOTT','BIG1');
PL/SQL procedure successfully completed.
SQL> SELECT TABLE_NAME,ROUND((BLOCKS*8),2)//'KB' "SIZE"
2 FROM USER_TABLES
3 WHERE TABLE_NAME = 'BIG1';
TABLE_NAME SIZE
------------------------------ ------------------------------------------
BIG1 85536KB
SQL> SELECT TABLE_NAME,ROUND((NUM_ROWS*AVG_ROW_LEN/1024),2)//'KB' "SIZE"
2 FROM USER_TABLES
3 WHERE TABLE_NAME = 'BIG1';
TABLE_NAME SIZE
------------------------------ ------------------------------------------
BIG1 68986.97KB
SQL> SELECT STATUS FROM USER_INDEXES
2 WHERE TABLE_NAME = 'BIG1';
no rows selected
SQL> --Важно, потребуется заново создать все индексы.