expdp/impdp操作例項

orclwujian發表於2015-04-28
資料庫版本11.2.0.3
因測試環境需要,需將正式環境下某使用者下的所有物件都匯入到測試環境中,這種情況expdp/impdp派上用場了!
因為expdp/impdp使用的是相當路徑所以我們需要在生產環境和測試環境都要建立directory
正式環境:
SQL> create directory DIRECTORY01 as '/oraod/expdir';
利用select * from dba_directories;可以檢視資料庫已經建立的相對路徑
在匯出之前,我們利用下面的語句查詢該使用者下有多少資料需要我們匯出
SELECT SUM(s.BYTES)/1024/1024/1024 "sizes(GB)"
  FROM dba_segments s
WHERE  s.owner= 'USER01'

 sizes(GB)
----------
841.142395
可以看到有841G,我們可以用11G expdp帶有的compression=ALL引數壓縮資料:
一是考慮到生產環境的磁碟空間不夠
二是等會要將這些資料SCP到測試環境,資料量太大需要很長的時間花在SCP上;

登陸伺服器su到資料庫使用者
執行expdp  system/123456 DIRECTORY=DIRECTORY01 DUMPFILE=schema_user01.dmp COMPRESSION=ALL SCHEMAS=USER01 PARALLEL=20 LOGFILE=schema_user01.log;
[prod@gtsbu expdp_dir]# ls -l
total 77345415
-rw-r----- 1 prod dba 79201562624 Apr 28 01:01 schemas_user01.dmp
-rw-r--r-- 1 prod dba      101206 Apr 28 01:01 schemas_user01.log
匯出成功我們可以看到壓縮匯出一共才77G的資料,節省空間是相當可觀的,但是匯出的時間要比正常匯出的時間多
[root@gtsbu expdp_dir]# scp *     在測試環境中建立directory  /orasbutmp/expdir就不在贅述 
再使用SCP命令將匯出的資料傳到測試環已經建立好的相對路徑中



測試環境:
從上面SCP過來的資料可以看出是root使用者的,所以我們需要把這些匯出資料屬主改成資料庫使用者的
[root@gitibisbudb ~]#cd /orasbutmp/expdir
[root@gitibisbudb expdir]# chown prod:dba *
由於測試環境中使用者資料已經和正式環境中的資料完全不一致的狀態,匯入的過程中所以我們先刪除使用者,再建立使用者,重新匯入
我們可以透過PL\SQL Developer工具匯出這個使用者的建立語句:
登陸PL\SQL Developer  ----開啟users----找到user01---右鍵view---再點右下角的View SQL
我們可以得到以下建立使用者語句
create user USER01
  identified by ""         --建立的時候需要在""加入之前這個使用者的密碼
  default tablespace USER01_DATA
  temporary tablespace USER01_TEMP
  profile DEFAULT;
-- Grant/Revoke object privileges
grant select, insert, update, delete, references, alter, index on EBS_R12.CUX_VEND_CUST_TMP_MV to USER01;
grant execute on SYS.DBMS_CRYPTO to USER01;
-- Grant/Revoke role privileges
grant connect to USER01;
grant dba to USER01;
grant resource to USER01;
-- Grant/Revoke system privileges
grant alter any materialized view to USER01;
grant create database link to USER01;
grant create materialized view to USER01;
grant create session to USER01;
grant create synonym to USER01;
grant create view to USER01;
grant debug connect session to USER01;
grant select any table to USER01;
grant unlimited tablespace to USER01;

刪除使用者SQL >drop user USER01 cascade;
建立使用者
su到資料庫使用者下
執行 impdp system/123456 dumpfile=schemas_user01.dmp directory=DIRECTORY01 SCHAMES=USER01 parallel=20 LOGFILE=schemas_user01.log
匯入匯出的相關命令使用
1.Ctrl+C組合鍵               在執行過程中,可以按CTRL+C鍵退出當前互動模式,退出之後,匯入匯出操作不會停止
2.Export > status            檢視當前JOB的狀態及相關資訊
3.Export > stop_job        暫停JOB
4.重新進入export模式:  expdp  system/123456 attach=system.SYS_IMPORT_TABLE_02;  jobname可以透過select * from dba_datapump_jobs查詢要終止的jobname
5.Export > start_job       開啟暫停的job
6.Export > kill_job          取消當前的JOB並釋放相關客戶會話(將JOB刪除同時刪除dmp檔案)
7.Export > exit_client     退出export模式

(匯入的時候第4條就用impdp)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29989552/viewspace-1608825/,如需轉載,請註明出處,否則將追究法律責任。

相關文章