ORACLE表批量遷移表空間


第一步:將表遷移到目標表空間
 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執行窗口中執行,就可以實現表數據及索引遷移。


免責聲明!

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



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