Oracle 数据库迁移一键创建源库表空间 SQL语句

Posted Lucifer三思而后行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 数据库迁移一键创建源库表空间 SQL语句相关的知识,希望对你有一定的参考价值。

⭐️ 获取需要迁移的用户可以参考: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三思而后行 ❤️

以上是关于Oracle 数据库迁移一键创建源库表空间 SQL语句的主要内容,如果未能解决你的问题,请参考以下文章

使用MySQL传输表空间迁移数据

oracle临时表空间可以迁移吗

Oracle 审计表AUD$迁移表空间及创建清理job

Oracle数据库创建表空间用户21-11-25

Oracle数据库创建表空间用户21-11-25

国产化人大金仓数据库转库工具:oracle12c数据库转kingbase8.6人大金仓数据库实例演示