?? 獲取需要遷移的用戶可以參考:Oracle 數(shù)據(jù)泵遷移用戶創(chuàng)建 SQL語句
首先通過用戶
來獲取遷移需要的表空間名稱:
SELECT distinct ''''|| t.tablespace_name||''',' From dba_segments t WHERE t.owner in ('需要遷移的用戶名') and t.tablespace_name not in ('USERS','SYSTEM');
?? 注意:需要排除系統(tǒng)默認(rèn)創(chuàng)建表空間!
通過 SQL 獲取創(chuàng)建腳本:
SELECT 'CREATE TABLESPACE ' ||D.TABLESPACE_NAME|| ' datafile ''/oradata/orcl/' ||LOWER(D.TABLESPACE_NAME)||'01.dbf'''|| ' size '|| case when (D.total_gb - F.free_gb) > 30 then 30 else round(D.total_gb - F.free_gb + 2) end ||'G autoextend off EXTENT MANAGEMENT LOCAL;' FROM (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024 * 1024), 2) free_gb FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F, (SELECT DD.TABLESPACE_NAME, ROUND(SUM(DD.BYTES) / (1024 * 1024 * 1024), 2) total_gb FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+) AND D.TABLESPACE_NAME IN ('需要創(chuàng)建的表空間名稱');
?? 注意:/oradata/orcl/
為目標(biāo)端的數(shù)據(jù)文件目錄路徑!
創(chuàng)建 shell 腳本來后臺創(chuàng)建表空間:
以下為 ctbs.sh
腳本內(nèi)容:
sqlplus / as sysdba <<EOF spool ctbs.log ## 這里填寫上面????sql查詢出來的語句! spool off EOF
編輯好腳本之后,執(zhí)行后臺創(chuàng)建:
chmod 775 ctbs.shsh ctbs.sh &
本次分享到此結(jié)束啦~