ORACLE跨schema的数据迁移linux
測试环境server不够,而同事需要新的oracle环境。把生产环境的数据拉一份过来搭建内部的系统跑;这个实例使用频率不高而且需要的资源不是很是多,因此准备在原有的负载不高的oracleserver上,又一次开一个新的实例,这样可以节省数据库server资源。数据库
使用DBCA在linux上创建第二个oracle实例,详细搭建过程參考:http://blog.csdn.net/mchdba/article/details/51418063session
因为线上的环境和新的实例不同,因此假设使用rman备份的话。在恢复的时候就需要设置很是多參数。不是太方便。因此准备使用expdp来进行数据的导出,而后使用impdp进行数据的导入工做。antd
线上主要有2个schemas,因此导出2个schema的数据就能够。一个是powerdesk、一个是plas。oracle
expdppowerdesk/pl_eahys0418 DIRECTORY=dir_dp DUMPFILE=powerdesk_20160829.dmpschemas=powerdesk LOGFILE=zxg.log;post
expdppowerdesk/pl_ethys0418 DIRECTORY=dir_dp DUMPFILE=plas_20160829.dmp schemas=plas LOGFILE=zxg.log;spa
[oracle@azure_earth_dbm1_3_111 dir_dp]$ scpplas_20160829.dmp powerdesk_20160829.dmp 192.168.121.61:/home/oracle/.net
The authenticity of host '192.168.121.61(192.168.121.61)' can't be established.server
RSA key fingerprint is0a:c7:1c:89:1d:9d:a2:e1:6c:36:68:d9:18:b4:ab:cc.blog
Are you sure you want to continueconnecting (yes/no)? yes
Warning: Permanently added '192.168.121.61'(RSA) to the list of known hosts.
oracle@192.168.121.61's password:
plas_20160829.dmp 100% 1067MB 5.4MB/s 03:16
powerdesk_20160829.dmp 100% 13GB 4.9MB/s 44:24
[oracle@azure_earth_dbm1_3_111 dir_dp]$
在使用impdp的时候,可以先建立对应的schema帐号。这样导入的时候,可以进行schema到schema之间的数据迁移。
createtablespace powerdesk
logging
datafile'/home/oradata/ysdb3/powerdesk01.DBF'
size50m
autoextendon
next50m
extentmanagement local;
createtablespace plas
logging
datafile'/home/oradata/ysdb3/plas01.DBF'
size50m
autoextendon
next50m
extentmanagement local;
CREATEUSER powerdesk PROFILE "DEFAULT" IDENTIFIED BY "powerdes0418" DEFAULT TABLESPACE"POWERDESK" ACCOUNT UNLOCK;
CREATEUSER plas PROFILE "DEFAULT" IDENTIFIED BY "plas0418"DEFAULT TABLESPACE "PLAS" ACCOUNT UNLOCK;
grantconnect,resource to powerdesk;
Grantdba to powerdesk;
grantcreate session to plas;
grantconnect,resource to plas;
# 先创建导入文件夹
createdirectory dir_dp1 as '/home/oracle/';
# 赋予文件夹权限
grantcreate,write,read to dir_dp1;
# 赋予用户对文件夹的操做权限
Grantread,write on directory dir_dp1 to powerdesk;
Grantread,write on directory dir_dp1 to plas;
time impdp system/yueworldpddirectory=dir_dp1 dumpfile=powerdesk_20160829.dmpREMAP_SCHEMA=powerdesk:powerdesk TABLE_EXISTS_ACTION=REPLACE PARALLEL=8
time impdp system/yueworldpd directory=dir_dp1dumpfile=plas_20160829.dmp REMAP_SCHEMA=plas:plas TABLE_EXISTS_ACTION=REPLACEPARALLEL=8
Oracle 从一个用户expdp导出再impdp导入到还有一个用户,可以使用REMAP_SCHEMA=user1:user2来实现:
假设想导入的用户已经存在:
1.导出用户 expdp user1/pass1 directory=dumpdir dumpfile=user1.dmp
2.导入用户 impdp user2/pass2 directory=dumpdir dumpfile=user1.dmpREMAP_SCHEMA=user1:user2 EXCLUDE=USER
假设想导入的用户不存在:
1.导出用户 expdp user1/pass1 directory=dumpdir dumpfile=user1.dmp
2.导入用户 impdp system/passsystem directory=dumpdir dumpfile=user1.dmpREMAP_SCHEMA=user1:user2
3.user2会本身主动创建,其权限和使用的表空间与user1一样,但此时用user2没法登陆,必须改动user2的密码