ORACLE表批量遷移表空間

abraham_dba_2013發表於2014-12-04

第一步:將表遷移到目標表空間

 1)使用如下語句,可以將需要移動的表空間語句在pl/sql中列出來,

select 'alter table ' ||table_name || ' move tablespace 目標表空間名稱;' from user_all_tables where tablespace_name='源表空間名稱'

例如:

登入資料庫使用者TEST。將TEST所有表從SYSTEM表空間遷移到USERS表空間。

select 'alter table ' ||table_name || ' move tablespace users;' from user_all_tables where tablespace_name='SYSTEM';

將PL/SQL中列出來的語句執行一次,就完成表的遷移。


2)將上面語句的結果拷貝到sql檔案1.sql中

第二步:重新生成索引:

1)使用如下語句,生成重新編譯索引語句:

SELECT 'alter index ' || index_name || ' rebuild tablespace users;'

  FROM user_indexes

 WHERE index_type = 'NORMAL'

   AND table_owner = 'SDHY_DEV'

   AND dropped = 'NO';

注意:

index_type包括兩種型別'NORMAL'為普通表,'LOB'為blob或者clob欄位生成的索引,在這裡要排除掉

 DROPPED包括YES和NO兩種型別,為YES時是廢棄的索引

2)將上面語句的結果拷貝到sql檔案2.sql中

第三步:批量執行操作:

將第一步與第二步列出的語句放在SQL執行視窗中執行,就可以實現表資料及索引遷移。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29439655/viewspace-1356643/,如需轉載,請註明出處,否則將追究法律責任。

相關文章