全部博文(136)
分类: Oracle
2008-07-29 10:24:18
SQL> select * from v$version;
BANNER ---------------------------------------------------------- Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production PL/SQL Release 9.2.0.1.0 - Production CORE 9.2.0.1.0 Production TNS for 32-bit Windows: Version 9.2.0.1.0 - Production NLSRTL Version 9.2.0.1.0 - Production -- (1)创建表与索引 SQL> conn tianyc/test@s9i
已连接。 SQL> create table yct1(a number(10), b varchar2(10)); 表已创建。
SQL> insert into yct1 values(1,'yct1');
已创建 1 行。
SQL> commit;
提交完成。
SQL> create index ind_yct1 on yct1(a);
索引已创建。
--(2)查看表与索引所在的表空间
SQL> select SEGMENT_NAME, SEGMENT_TYPE, TABLESPACE_NAME from
user_segments;
SEGMENT_NAME SEGMENT_TYPE
TABLESPACE_NAME
-------------------- ------------------ ------------------------------ YCT1 TABLE USERS IND_YCT1 INDEX USERS --(3)查看索引的状态
SQL> select INDEX_NAME, INDEX_TYPE, TABLE_OWNER, TABLE_NAME, STATUS from
user_indexes;
INDEX_NAME INDEX_TYPE TABLE_OWNER
TABLE_NAME STATUS
-------------------- -------------------- -------------------- -------------------- ------- IND_YCT1 NORMAL TIANYC YCT1 VALID --(4)将表 move 到表空间 tp_test
SQL> alter table yct1 move tablespace tp_test;
表已更改。
SQL> select SEGMENT_NAME, SEGMENT_TYPE, TABLESPACE_NAME from
user_segments;
SEGMENT_NAME SEGMENT_TYPE
TABLESPACE_NAME
-------------------- ------------------ ------------------------------ YCT1 TABLE TP_TEST IND_YCT1 INDEX USERS --(5)查看索引状态:失效
SQL> select INDEX_NAME, INDEX_TYPE, TABLE_OWNER, TABLE_NAME, STATUS from
user_indexes;
INDEX_NAME INDEX_TYPE TABLE_OWNER
TABLE_NAME STATUS
-------------------- -------------------- -------------------- -------------------- -------- IND_YCT1 NORMAL TIANYC YCT1 UNUSABLE --(6)重建索引到指定表空间 tp_test
SQL> alter index IND_YCT1 rebuild tablespace tp_test;
索引已更改。
SQL> select SEGMENT_NAME, SEGMENT_TYPE, TABLESPACE_NAME from
user_segments;
SEGMENT_NAME SEGMENT_TYPE
TABLESPACE_NAME
-------------------- ------------------ ------------------------------ YCT1 TABLE TP_TEST IND_YCT1 INDEX TP_TEST SQL> select INDEX_NAME, INDEX_TYPE, TABLE_OWNER, TABLE_NAME, STATUS from
user_indexes;
INDEX_NAME INDEX_TYPE TABLE_OWNER
TABLE_NAME STATUS -------------------- -------------------- -------------------- -------------------- ------- IND_YCT1 NORMAL TIANYC YCT1 VALID |
--(1)测试表 yct1 中增加一个 lob 字段
SQL> alter table yct1 add c blob;
表已更改。
SQL> select SEGMENT_NAME, SEGMENT_TYPE, TABLESPACE_NAME from
user_segments;
SEGMENT_NAME SEGMENT_TYPE
TABLESPACE_NAME
-------------------- ------------------ ------------------------------ YCT1 TABLE TP_TEST IND_YCT1 INDEX TP_TEST SYS_IL0000033178C000 LOBINDEX TP_TEST SYS_LOB0000033178C00 LOBSEGMENT TP_TEST --(2)move 表和索引后,LOB 字段并没有被 move(只移动了指向该存储位置的 LOB
指针)。
SQL> alter table yct1 move tablespace users;
表已更改。
SQL> alter index ind_yct1 rebuild tablespace users;
索引已更改。
SQL> select SEGMENT_NAME, SEGMENT_TYPE, TABLESPACE_NAME from
user_segments;
SEGMENT_NAME SEGMENT_TYPE
TABLESPACE_NAME
-------------------- ------------------ ------------------------------ YCT1 TABLE USERS IND_YCT1 INDEX USERS SYS_IL0000033178C000 LOBINDEX TP_TEST SYS_LOB0000033178C00 LOBSEGMENT TP_TEST --(3)LOB 字段得手工移动
SQL> alter table yct1 move lob(c) store as (tablespace users);
表已更改。
SQL> select SEGMENT_NAME, SEGMENT_TYPE, TABLESPACE_NAME from
user_segments;
SEGMENT_NAME SEGMENT_TYPE
TABLESPACE_NAME
-------------------- ------------------ ------------------------------ YCT1 TABLE USERS IND_YCT1 INDEX USERS SYS_IL0000033178C000 LOBINDEX USERS SYS_LOB0000033178C00 LOBSEGMENT USERS --(4)或者在 move 表的时候,就指定同时 move LOB 字段。
SQL> alter table yct1 move tablespace tp_test lob(c) store as
(tablespace tp_test);
表已更改。
SQL> alter index ind_yct1 rebuild tablespace tp_test;
索引已更改。
SQL> select SEGMENT_NAME, SEGMENT_TYPE, TABLESPACE_NAME from
user_segments;
SEGMENT_NAME SEGMENT_TYPE
TABLESPACE_NAME -------------------- ------------------ ------------------------------ YCT1 TABLE TP_TEST IND_YCT1 INDEX TP_TEST SYS_IL0000033178C000 LOBINDEX TP_TEST SYS_LOB0000033178C00 LOBSEGMENT TP_TEST |