oracle move表空間(分區表,索引)


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;

--這里面可能包含普通索引,執行會報錯,忽略即可

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM