當(dāng)前位置:首頁 > IT技術(shù) > 數(shù)據(jù)庫 > 正文

Oracle 數(shù)據(jù)庫遷移一鍵創(chuàng)建源庫表空間 SQL語句
2021-09-13 10:27:50

?? 獲取需要遷移的用戶可以參考: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 ('需要?jiǎng)?chuàng)建的表空間名稱');

???? 注意:/oradata/orcl/ 為目標(biāo)端的數(shù)據(jù)文件目錄路徑!

創(chuàng)建 shell 腳本來后臺(tái)創(chuàng)建表空間:

以下為 ctbs.sh 腳本內(nèi)容:

sqlplus / as sysdba <<EOF
spool ctbs.log
## 這里填寫上面????????sql查詢出來的語句!
spool off
EOF

編輯好腳本之后,執(zhí)行后臺(tái)創(chuàng)建:

chmod 775 ctbs.sh
sh ctbs.sh &

本次分享到此結(jié)束啦~

如果覺得文章對(duì)你有幫助,點(diǎn)贊、收藏、關(guān)注、評(píng)論,一鍵四連支持,你的支持就是我創(chuàng)作最大的動(dòng)力。

?? 技術(shù)交流可以 關(guān)注公眾號(hào):Lucifer三思而后行 ??

本文摘自 :https://blog.51cto.com/l

開通會(huì)員,享受整站包年服務(wù)立即開通 >