SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
T5 TABLE
T6 TABLE
SYS_IOT_OVER_51451 TABLE
SALES TABLE
CLU1 CLUSTER
EMP_C1 TABLE 1
DEPT_C1 TABLE 2
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
T2 TABLE
T3 TABLE
T4 TABLE
CHAINED_ROWS TABLE
T1 TABLE
T1_TEMP TABLE
EMP1 TABLE
18 rows selected.
SQL> drop table t1 purge;
Table dropped.
SQL> create table t1 as select * from emp where 0=9;
Table created.
SQL> alter table t1 enable rowmovement;
alter table t1 enable rowmovement
*
ERROR at line 1:
ORA-00905: missing keyword
SQL> alter table t1 enable row movement;
Table altered.
SQL> desc tabs
Name Null? Type
----------------------------------------- -------- ----------------------------
TABLE_NAME NOT NULL VARCHAR2(30)
TABLESPACE_NAME VARCHAR2(30)
CLUSTER_NAME VARCHAR2(30)
IOT_NAME VARCHAR2(30)
STATUS VARCHAR2(8)
PCT_FREE NUMBER
PCT_USED NUMBER
INI_TRANS NUMBER
MAX_TRANS NUMBER
INITIAL_EXTENT NUMBER
NEXT_EXTENT NUMBER
MIN_EXTENTS NUMBER
MAX_EXTENTS NUMBER
PCT_INCREASE NUMBER
FREELISTS NUMBER
FREELIST_GROUPS NUMBER
LOGGING VARCHAR2(3)
BACKED_UP VARCHAR2(1)
NUM_ROWS NUMBER
BLOCKS NUMBER
EMPTY_BLOCKS NUMBER
AVG_SPACE NUMBER
CHAIN_CNT NUMBER
AVG_ROW_LEN NUMBER
AVG_SPACE_FREELIST_BLOCKS NUMBER
NUM_FREELIST_BLOCKS NUMBER
DEGREE VARCHAR2(10)
INSTANCES VARCHAR2(10)
CACHE VARCHAR2(5)
TABLE_LOCK VARCHAR2(8)
SAMPLE_SIZE NUMBER
LAST_ANALYZED DATE
PARTITIONED VARCHAR2(3)
IOT_TYPE VARCHAR2(12)
TEMPORARY VARCHAR2(1)
SECONDARY VARCHAR2(1)
NESTED VARCHAR2(3)
BUFFER_POOL VARCHAR2(7)
ROW_MOVEMENT VARCHAR2(8)
GLOBAL_STATS VARCHAR2(3)
USER_STATS VARCHAR2(3)
DURATION VARCHAR2(15)
SKIP_CORRUPT VARCHAR2(8)
MONITORING VARCHAR2(3)
CLUSTER_OWNER VARCHAR2(30)
DEPENDENCIES VARCHAR2(8)
COMPRESSION VARCHAR2(8)
DROPPED VARCHAR2(3)
SQL> select table_name,ROW_MOVEMENT from tabs;
TABLE_NAME ROW_MOVE
------------------------------ --------
DEPT DISABLED
EMP DISABLED
BONUS DISABLED
SALGRADE DISABLED
T5 DISABLED
T6 DISABLED
SYS_IOT_OVER_51451 DISABLED
DEPT_C1 DISABLED
EMP_C1 DISABLED
T2 DISABLED
T4 DISABLED
TABLE_NAME ROW_MOVE
------------------------------ --------
CHAINED_ROWS DISABLED
T1_TEMP DISABLED
EMP1 ENABLED
T1 ENABLED
SALES DISABLED
T3 DISABLED
17 rows selected.
SQL> insert into t1 select * from emp;
14 rows created.
SQL> insert into t1 select * from t1;
14 rows created.
SQL> /
28 rows created.
SQL> /
56 rows created.
SQL> /
112 rows created.
SQL> /
224 rows created.
SQL> commit;
Commit complete.
SQL> select dbms_rowid.rowid_block_number(rowid) block#,count(*) from t1 group by dbms_rowid.rowid_block_number(rowid) order by 1;
BLOCK# COUNT(*)
---------- ----------
116 170
117 108
120 170
SQL> alter table t1 shrink space;
Table altered.
SQL> select dbms_rowid.rowid_block_number(rowid) block#,count(*) from t1 group by dbms_rowid.rowid_block_number(rowid) order by 1;
BLOCK# COUNT(*)
---------- ----------
116 170
117 190
118 88
SQL> alter table t1 shrink space;
Table altered.
SQL> select dbms_rowid.rowid_block_number(rowid) block#,count(*) from t1 group by dbms_rowid.rowid_block_number(rowid) order by 1;
BLOCK# COUNT(*)
---------- ----------
116 170
117 190
118 88
SQL> delete t1 where empno=7900;
32 rows deleted.
SQL> select dbms_rowid.rowid_block_number(rowid) block#,count(*) from t1 group by dbms_rowid.rowid_block_number(rowid) order by 1;
BLOCK# COUNT(*)
---------- ----------
116 158
117 176
118 82
SQL> alter table t1 shrink space;
Table altered.
SQL> select dbms_rowid.rowid_block_number(rowid) block#,count(*) from t1 group by dbms_rowid.rowid_block_number(rowid) order by 1;
BLOCK# COUNT(*)
---------- ----------
116 158
117 176
118 82
SQL> delete t1 where empno=7902;
32 rows deleted.
SQL> alter table t1 shrink space; -------压缩空间
Table altered.
SQL> select dbms_rowid.rowid_block_number(rowid) block#,count(*) from t1 group by dbms_rowid.rowid_block_number(rowid) order by 1;
BLOCK# COUNT(*)
---------- ----------
116 146
117 163
118 75
SQL> delete t1 where empno=7839;
32 rows deleted.
SQL> select dbms_rowid.rowid_block_number(rowid) block#,count(*) from t1 group by dbms_rowid.rowid_block_number(rowid) order by 1;
BLOCK# COUNT(*)
---------- ----------
116 134
117 149
118 69
SQL> alter table t1 shrink space;
Table altered.
SQL> select dbms_rowid.rowid_block_number(rowid) block#,count(*) from t1 group by dbms_rowid.rowid_block_number(rowid) order by 1;
BLOCK# COUNT(*)
---------- ----------
116 187
117 165
SQL> create index k1 on t1(empno);
Index created.
SQL> select inedx_name,status from user_indexes;
select inedx_name,status from user_indexes
*
ERROR at line 1:
ORA-00904: "INEDX_NAME": invalid identifier
SQL> select index_name,status from user_indexes;
INDEX_NAME STATUS
------------------------------ --------
PK_DEPT VALID
PK_EMP VALID
SALES_PK VALID
IDX_CLU1 VALID
K1 VALID
SQL> alter table t1 move tablespace users;
Table altered.
SQL> select index_name,status from user_indexes;
INDEX_NAME STATUS
------------------------------ --------
PK_DEPT VALID
PK_EMP VALID
SALES_PK VALID
IDX_CLU1 VALID
K1 UNUSABLE
SQL> alter index k1 rebuild; -----重构索引
Index altered.
SQL> select index_name,status from user_indexes;
INDEX_NAME STATUS
------------------------------ --------
PK_DEPT VALID
PK_EMP VALID
SALES_PK VALID
IDX_CLU1 VALID
K1 VALID
SQL> alter table t1 shrinl space;
alter table t1 shrinl space
*
ERROR at line 1:
ORA-01735: invalid ALTER TABLE option
SQL> alter table t1 shrink space;
Table altered.
SQL> select index_name,status from user_indexes;
INDEX_NAME STATUS
------------------------------ --------
PK_DEPT VALID
PK_EMP VALID
SALES_PK VALID
IDX_CLU1 VALID
K1 VALID