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的密碼