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; --这里面可能包含普通索引,执行会报错,忽略即可