Oracle实验(move表空间和database link)(二)

2014-11-24 17:27:05 · 作者: · 浏览: 1
-------------------------- ------------------------------ --------


COUNTRIES VALID


--对于IOT而言,只有索引段,没有数据段,也就不存在move到另一个表空间的说法。


常用的rebuild操作不能使用在IOT主键索引中,而且disable索引也没有办法实现。整理IOT的方法,可以选择数据表的move方法。


VIP@PROD>alter table COUNTRIES move;


Table altered.


效果是可以将存在大量死叶子节点的IOT表的索引高水位线下降。参考文章:



2. alter table CUSTOMER move tablespace DATA


*


ERROR at line 1:


ORA-00997: illegal use of LONG datatype


查看一下CUSTOMER表的结构:


VIP@PROD>desc customer


Name Null Type


--------------------- -------- ------------


CUSTOMER_ID NOT NULL NUMBER(6)


NAME VARCHAR2(45)


ADDRESS VARCHAR2(40)


CITY VARCHAR2(30)


STATE VARCHAR2(2)


ZIP_CODE VARCHAR2(9)


AREA_CODE NUMBER(3)


PHONE_NUMBER NUMBER(7)


SALESPERSON_ID NUMBER(4)


CREDIT_LIMIT NUMBER(9,2)


COMMENTS LONG


问题可能就出在最后一个字段:COMMENTS LONG


解决:




If you get an "ORA-00997: illegal use of LONG datatype" error, metalink (note 165901.1) advises you to
1. Export the table.
2. Recreate the table in the new tablespace.
3. Import the table.


对于Oracle来说,LONGs are deprecated since 8.0 ,建议将LONG/LONG RAW类型改为BLOB/CLOB等。



vi. move以后,表会发生哪些变化;以及对相关的查询有何影响




VIP@PROD>select sum(bytes)/1024/1024 from user_segments;


SUM(BYTES)/1024/1024


--------------------


99.6875—为什么会比move之前大?


除此之外,还应该检查新表空间DATA的碎片情况,和之前在SYSTEM表空间时,SYSTEM表空间的碎片情况进行对比:


?如何做?