本次客户需求是将 xxx 数据库的 7 个用户 ( 共计 7t 数据 ) 迁移至测试库,由于存储空间紧张,决定采用不落地方式导入到测试库。
但是有一点需要注意,network是不支持long字段的迁移的,所以需要单独对long字段的表进行迁移,
查看用户是否存在 LONG 字段的表
SQL> select OWNER,TABLE_NAME from dba_tab_columns where owner in('PRODUCT','BASE','SEC','RES','ZG','CP','SO1') and DATA_TYPE='LONG';
OWNER TABLE_NAME
------------------------------ ------------------------------
CP PLAN_TABLE
一、源库查询需要建的表空间
查询用户默认表空间以及关联表空间,并查出对应表空间的大小
select tablespace_name, sum(bytes) / (1024*1024*1024) size_G
from dba_segments
where owner in('PRODUCT','BASE','SEC','RES','ZG','CP','SO1')
group by tablespace_name;
TABLESPACE_NAME SIZE_G
------------------------------ ----------
ZG_IDX 317.687744
REP .000427246
BASE_IDX 15.4326172
ZC .000183105
SO1 4616.41113
USERS 5.88464355
RES 57.7888184
GJ 3.06890869
ZG 1584.76373
SEC 1.24707031
CP .145446777
BASE 38.2277832
UA_IDX .021484375
PRODUCT .370910645
SEC_IDX 1.9140625
SO1_IDX 1117.29614
UA .000244141
RES_IDX 23.7958984
可以看到有些表空间的数据量很大,一个个建数据文件非常麻烦。
这里有两种办法
1 、创建 BIGFILE 表空间 ( 缺点就是 RMAN 备份的时候全在一个文件上了,会导致很大,传输起来很麻烦 )
create BIGFILE TABLESPACE SO1 DATAFILE '+DATA/szboss/SO1.dbf' size 1G autoextend on;
2 、算好差不多需要几个32G数据文件,创建几个即可
create TABLESPACE SO1 DATAFILE '+DATA' size 1G autoextend on;
二、表空间创建完之后开始不落地导入 ( 因为数据量略大,怕一个用户导入错了,难排查,就分了 7 个用户导 )
nohup impdp system/oracle DIRECTORY=mydata NETWORK_LINK=expdp_dblink schemas=SO1 logfile=SO1.log & nohup impdp system/oracle DIRECTORY=mydata NETWORK_LINK=expdp_dblink schemas=RES logfile=RES.log & nohup impdp system/oracle DIRECTORY=mydata NETWORK_LINK=expdp_dblink schemas=ZG logfile=ZG.log & nohup impdp system/oracle DIRECTORY=mydata NETWORK_LINK=expdp_dblink schemas=SEC logfile=SEC.log & nohup impdp system/oracle DIRECTORY=mydata NETWORK_LINK=expdp_dblink schemas=CP logfile=CP.log & nohup impdp system/oracle DIRECTORY=mydata NETWORK_LINK=expdp_dblink schemas=BASE logfile=BASE.log & nohup impdp system/oracle DIRECTORY=mydata NETWORK_LINK=expdp_dblink schemas=PRODUCT logfile=PRODUCT.log &
三、导入long字段的表
nohup impdp system/oracle DIRECTORY=mydata NETWORK_LINK=expdp_dblink schemas=CP tables=PLAN_TABLE logfile=PLAN_TABLE.log &
