我們會發現通過exp、imp導入庫的表所屬表空間還是導出時的表空間,那麼假如我們導入的數據庫表空間和導入時的數據庫表空間不一致時就會比較麻煩,這裏我們主要處理,已經導入的表所屬表空間不是指向我們所要的表空間時如何修改。
1、查看錶當前所屬表空間
SELECT TABLE_NAME,TABLESPACE_NAME FROM USER_TABLES -- WHERE TABLE_NAME='test' --可以加上條件
比如我們看到我的庫裏有兩個表表空間是USERS,而非我們自建的FCCMS
這時候我們就可以修改表空間爲USERS的兩個表所屬的表空間
2、確認需要修改的批量組裝成修改SQL語句
SELECT 'alter table '||TABLE_NAME||' move tablespace FCCMS;' FROM USER_TABLES WHERE TABLESPACE_NAME = 'USERS'
得到如下結果
現在我們賦值查詢結果,粘貼至命令框進行執行
3、執行表空間修改
4、查看修改結果
成功!
修改表索引同上
SELECT 'alter index '|| INDEX_NAME ||' rebuild tablespace FCCMS;' FROM user_indexes;
PS:這裏需要注意TEST2表裏包含的CLOB字段,針對Clob、Blob字段需單獨做修改處理
ALTER TABLE TEST2 MOVE TABLESPACE USERS LOB(col_lob1,col_lob2) STORE AS(TABLESAPCE FCCMS);