?? 獲取需要遷移的用戶可以參考:Oracle 資料泵遷移用戶創建 SQL陳述句
首先通過用戶來獲取遷移需要的表空間名稱:
SELECT distinct ''''|| t.tablespace_name||''',' From dba_segments t WHERE t.owner in ('需要遷移的用戶名') and t.tablespace_name not in ('USERS','SYSTEM');
📢 注意:需要排除系統默認創建表空間!
通過 SQL 獲取創建腳本:
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 ('需要創建的表空間名稱');
📢 注意:/oradata/orcl/ 為目標端的資料檔案目錄路徑!
創建 shell 腳本來后臺創建表空間:
以下為 ctbs.sh 腳本內容:
sqlplus / as sysdba <<EOF
spool ctbs.log
## 這里填寫上面👆🏻sql查詢出來的陳述句!
spool off
EOF
編輯好腳本之后,執行后臺創建:
chmod 775 ctbs.sh
sh ctbs.sh &
本次分享到此結束啦~
如果覺得文章對你有幫助,點贊、收藏、關注、評論,一鍵四連支持,你的支持就是我創作最大的動力,
?? 技術交流可以 關注公眾號:Lucifer三思而后行 ??
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/299407.html
標籤:其他
下一篇:Hive的分桶表
