oracle的数据表、索引从一个表空间迁移到另一个表空间

1、oracle的索引迁移SQL:

----查询索引
select * from user_objects t where t.object_type = 'INDEX'; ----或查询索引 select * from user_indexes t where t.table_owner='SNSRM'; ----查询索引 select * from user_segments t where t.segment_type = 'INDEX'; ----将索引的表空间迁移到另一个表空间APPS_TS_TX_IDX alter index COMPLAINT_RLINE_ID_U_IND rebuild tablespace APPS_TS_TX_IDX; ----索引重新编译,不然会出现这类索引的分区处于不可用状态 alter index COMPLAINT_RLINE_ID_U_IND rebuild; ----批量生成索引迁移的SQL脚本 select 'alter index SNSRM.'|| t.index_name ||' rebuild tablespace APPS_TS_TX_IDX;' from user_indexes t where t.table_owner='SNSRM'; ----批量生成索引重新编译的SQL脚本 select 'alter index SNSRM.'|| t.index_name ||' rebuild;' from user_indexes t where t.table_owner='SNSRM';

2、oracle的数据表迁移

----查询旧表空间的数据表
select * from user_tables t where t.TABLESPACE_NAME='SNSRM_TS'; ----将数据表迁移到新表空间 alter table ACT_EVT_LOG move tablespace APPS_TS_TX_DATA; ----移动LOB字段,数据表 ALTER TABLE 表名 MOVE LOB(lob列名) STORE AS (TABLESPACE 表空间名); ----批量生成数据表迁移到新表空间的SQL脚本 select 'alter table SNSRM.'|| t.TABLE_NAME ||' move tablespace APPS_TS_TX_DATA;' from user_tables t where t.TABLESPACE_NAME='SNSRM_TS';

将其生成的批量SQL脚本copy出来,放在【Command Window】窗口上【Editor】执行即可。后面索引批量重新编译。

注意:

  • SQL脚本放在【SQL Window】也是可以执行,不过效率很低,建议放在【Command Window】的【Editor】下执行。
  • 索引的表空间和数据表的表空间建议独立分开为两个不同的表空间,这样不会出现两者竞争资源的现场。

 
来源: 日照SEO

猜你喜欢

转载自www.cnblogs.com/1994jinnan/p/12891518.html