2012年7月9日星期一

Oracle表和索引移动表空间

-----------------------------对表进行表空间移动操作-----------------------------
如果有一张表ACCOUNTS存放在表空间EXAMPLE
现在要把表ACCOUNTS移动到表空间DEMO下,该怎么操作?
操作语句如下:
ALTER TABLE ACCOUNTS MOVE TABLESPACE DEMO;
COMMIT;

ACCOUNTS表的结构和数据会一起被移动到表空间demo下。
如果要把表空间example下的所有表全部移动到表空间demo下该怎么操作?
操作语句如下:
SELECT 'ALTER TABLE '||TABLE_NAME||' MOVE TABLESPACE DEMO;
COMMIT;' FROM USER_TABLES WHERE TABLESPACE_NAME='EXAMPLE';

-----------------------------对索引进行表空间移动操作--------------------------
如果ACCOUNTS表上有索引BMI_ACCOUNTS,ACCOUNTS被移动到表空间demo后,
其索引BMI_ACCOUNTS并不会自动被移动到表空间DEMO中。
移动索引的表空间改怎么操作?
ALTER INDEX BMI_ACCOUNTS REBUILD TABLESPACE DEMO;
COMMIT;

如果要把表空间EXAMPLE下的所有索引移动到表空间DEMO下该怎么操作?
操作语句如下:
SELECT 'ALTER INDEX '||INDEX_NAME||' REBUILD TABLESPACE DEMO;
COMMIT;' FROM USER_INDEXES WHERE TABLESPACE_NAME='EXAMPLE';