1.修改分區表分區表空間
SELECT 'ALTER TABLE ' || table_owner || '.' || TABLE_NAME || ' MOVE PARTITION ' || PARTITION_NAME || ' TABLESPACE D_TBS_NEW;' FROM DBA_TAB_PARTITIONS WHERE TABLE_OWNER = 'OWNER' AND TABLE_NAME IN ('TABLE_NAMES') ALTER TABLE OWNER.TABLENAME MOVE PARTITION PAT_P201906 TABLESPACE D_TBS_NEW;
2.修改分區表默認表空間
分區表的默認表空間即表定義里面的tablespace,不是分區定義里面的tablespace。如果表為自動分區,那么新分區會直接建到默認表空間里面
SELECT 'alter table ' || owner || '.' || table_name || ' modify default attributes tablespace D_TBS_NEW;' FROM DBA_TABLES WHERE OWNER = 'OWNER' AND TABLE_NAME IN ('TABLE_NAME') alter table OWNER.TABLENAME modify default attributes tablespace D_TBS_NEW;
3.修改分表索引分區表空間
SELECT 'ALTER INDEX ' || index_owner || '.' || index_name || ' REBUILD PARTITION ' || PARTITION_NAME || ' TABLESPACE D_TBS_NEW;' FROM DBA_ind_PARTITIONS WHERE index_owner = 'OWNER' AND INDEX_NAME LIKE '%TABLENAME%' ALTER INDEX OWNER.INDEXNAME REBUILD PARTITION PAT_P201906 TABLESPACE D_TBS_NEW;
4.修改普通索引表空間
SELECT 'ALTER INDEX ' || owner || '.' || index_name || ' REBUILD TABLESPACE I_TBS_NEW;' FROM dba_indexes WHERE owner = 'OWNER' AND table_name IN ('TABLE_NAME') ALTER INDEX OWNER.INDEXNAME REBUILD TABLESPACE I_TBS_NEW; --這里面可能會包含分區索引,執行的時候會報錯,忽略即可
5.修改分區索引默認表空間
SELECT 'ALTER INDEX ' || owner || '.' || index_name || ' modify default attributes tablespace I_TBS_NEW;' FROM dba_indexes WHERE OWNER = 'OWNER' AND table_name in ('TABLE_NAMES') alter index OWNER.INDEXNAME modify default attributes tablespace I_TBS_NEW; --這里面可能包含普通索引,執行會報錯,忽略即可
