Oracle修改表Table所屬表空間及Clob、Blob字段的處理


我們會發現通過exp、imp導入庫的表所屬表空間還是導出時的表空間,那么假如我們導入的數據庫表空間和導入時的數據庫表空間不一致時就會比較麻煩,這里我們主要處理,已經導入的表所屬表空間不是指向我們所要的表空間時如何修改。

        1、查看表當前所屬表空間

SELECT TABLE_NAME,TABLESPACE_NAME FROM USER_TABLES -- WHERE TABLE_NAME='test' --可以加上條件
        比如我們看到我的庫里有兩個表表空間是USERS,而非我們自建的FCCMS
![image.png](https://upload-images.jianshu.io/upload_images/17282254-51b4666e5e8e4bb6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

        這時候我們就可以修改表空間為USERS的兩個表所屬的表空間

        2、確認需要修改的批量組裝成修改SQL語句

SELECT 'alter table '||TABLE_NAME||' move tablespace FCCMS;' FROM USER_TABLES WHERE TABLESPACE_NAME = 'USERS'
        得到如下結果
![image.png](https://upload-images.jianshu.io/upload_images/17282254-a753993ed3189b0a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

        現在我們賦值查詢結果,粘貼至命令框進行執行

        3、執行表空間修改
![image.png](https://upload-images.jianshu.io/upload_images/17282254-d626cf913df7f94d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

        4、查看修改結果
![image.png](https://upload-images.jianshu.io/upload_images/17282254-eb9ac1b6b3c9bfcb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

        成功!

        修改表索引同上

SELECT 'alter index '|| INDEX_NAME ||' rebuild tablespace FCCMS;' FROM user_indexes;
        PS:這里需要注意如果表里包含的CLOB、BLOB及相關LOB的字段,需單獨做修改索引處理 
1、select * from user_indexes where index_name like 'SYS%';--通過這個語句查詢出含有LOB字段相關的表格。
2、desc SCREENING_IWL_ENTITY;
3、ALTER TABLE 表名 MOVE LOB('含有LOB的字段名') STORE AS(TABLESPACE 索引表空間名);

 

select table_name from user_tab_columns where data_type in('CLOB','BLOB');


免責聲明!

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



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