⭐️ 获取需要迁移的用户可以参考:Oracle 数据泵迁移用户创建 SQL语句
首先通过用户
来获取迁移需要的表空间名称:
SELECTdistinct''''|| 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 '||casewhen (D.total_gb-F.free_gb) >30then30elseround(D.total_gb-F.free_gb+2) end||'G autoextend off EXTENT MANAGEMENT LOCAL;'FROM (SELECTTABLESPACE_NAME, ROUND(SUM(BYTES) / (1024*1024*1024), 2) free_gbFROMSYS.DBA_FREE_SPACEGROUPBYTABLESPACE_NAME) F, (SELECTDD.TABLESPACE_NAME, ROUND(SUM(DD.BYTES) / (1024*1024*1024), 2) total_gbFROMSYS.DBA_DATA_FILESDDGROUPBYDD.TABLESPACE_NAME) DWHERED.TABLESPACE_NAME=F.TABLESPACE_NAME(+) ANDD.TABLESPACE_NAMEIN ('需要创建的表空间名称');
📢 注意:/oradata/orcl/
为目标端的数据文件目录路径!
创建 shell 脚本来后台创建表空间:
以下为 ctbs.sh
脚本内容:
sqlplus/assysdba<<EOFspoolctbs.log##这里填写上面👆🏻sql查询出来的语句!spooloffEOF
编辑好脚本之后,执行后台创建:
chmod775ctbs.shshctbs.sh&
本次分享到此结束啦~