oracle expdp/impdp 數據泵導入導出 數據庫導入導出

業務場景:
    在工作中,涉及到oracle數據庫遷移,使用navicat等其他工具 容易報錯,一系列問題很麻煩,今天記錄一下操作流程及個人理解(文章參考了很多文檔和博客);

EXPDP數據導出
請自行修改目錄路徑和自定義的表名,否則出現錯誤很難查找~

一般expdp流程:

   

一、新建邏輯目錄
最好以system等管理員創建邏輯目錄,Oracle不會自動創建實際的物理目錄“D:\oracleData”(務必手動創建此目錄),僅僅是進行定義邏輯路徑dump_dir;

忘記sys用戶密碼的可以去下如何修改sys用戶密碼;

建議使用pl、navicat等oracle操作工具來操作;

登陸後sql執行:

 
create directory mydata as '邏輯目錄路徑'; 
例如: 
create directory mydata as '/data/oracle/oradata/mydata';
二、查看邏輯目錄是否創建成功
執行sql:

sql>select * from dba_directories


三、用expdp導出數據
用法及解釋:

expdp 用戶名/密碼@ip地址/實例  [屬性]
 
ip地址不寫默認就是本地
userid=test/test            --導出的用戶,本地用戶!!
directory=dmpfile          --導出的邏輯目錄,一定要在oracle中創建完成的,並且給用戶授權讀寫權限
dumpfile=xx.dmp      --導出的數據文件的名稱,如果想在指定的位置的話可以寫成dumpfile=/home/oracle/userxx.dmp
logfile=xx.log          --日誌文件,如果不寫這個參數的話默認名稱就是export.log,可以在本地的文件夾中找到
schemas=userxx       --使用dblink導出的用戶不是本地的用戶,需要加上schema來確定導出的用戶,類似於exp中的owner,但還有一定的區別
EXCLUDE=TABLE:"IN('T1','T2','T3')"     --exclude 可以指定不導出的東西,table,index等,後面加上不想導出的表名
network_link=db_local          --這個參數是使用的dblink來遠程導出,需要指定dblink的名稱

列出一些場景:

1)導出用戶及其對象
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp directory=dump_dir logfile=expdp.log;

2)導出指定表
expdp scott/tiger@orcl tables=emp,dept dumpfile=expdp.dmp directory=dump_dir logfile=expdp.log;

3)按查詢條件導
expdp scott/tiger@orcl directory=dump_dir dumpfile=expdp.dmp tables=empquery='where deptno=20' logfile=expdp.log;

4)按表空間導
expdp system/manager@orcl directory=dump_dir dumpfile=tablespace.dmp tablespaces=temp,example logfile=expdp.log;

5)導整個數據庫
expdp scott/[email protected]/orcl directory=dump_dir dumpfile=ly.dmp full=y  logfile=expdp.log;

一般用的都是導出整個數據庫,本人使用的代碼:

//包含所有用戶的表、視圖、索引等
expdp JCPT/[email protected]/orcl directory=mydata dumpfile=ly.dmp full=y  logfile=expdp.log;
//指定用戶的表、視圖、索引等
expdp JCPT/[email protected]/orcl directory=mydata schemas=jcpt dumpfile=ly.dmp logfile=expdp.log;
 
 

導出完成後:邏輯目錄生成了一個 dmp文件;

IMPDP數據導入
在正式導入數據前,要先確保要導入的用戶已存在,如果沒有存在,請先用下述命令進行新建用戶

流程:

一、創建表空間
使用system登錄oracle,執行sql

格式: create tablespace 表間名 datafile '數據文件名' size 表空間大小                

create tablespace data_test datafile 'e:\oracle\oradata\test\test.dbf' size 2000M;
                (*數據文件名 包含全路徑, 表空間大小 2000M 表是 2000兆) 
二、創建用戶並授權         
格式: create user 用戶名 identified by 密碼 default tablespace 表空間表;                

create user study identified by study default tablespace data_test;
 (*我們創建一個用戶名爲 study,密碼爲 study, 表空間爲 madate-這是在上一步建好的.)          

授權給 用戶 study     ,執行sql

#給用戶邏輯目錄讀寫權限
sql>grant read,write on directory mydata to study;
#給用戶表空間權限
sql>grant dba,resource,unlimited tablespace to study;
 

  三、impdp導入
命令在cmd或者控制檯輸入,不是sql語句

寫法:

impdp 用戶名/密碼@ip地址/實例  [屬性]

ip地址不寫默認就是本地

註釋:

1)導入用戶(從用戶scott導入到用戶scott)
impdp scott/tiger@orcl directory=dump_dir dumpfile=expdp.dmp schemas=scott logfile=impdp.log;

2)導入表(從scott用戶中把表dept和emp導入到system用戶中)
impdp system/manager@orcl directory=dump_dir dumpfile=expdp.dmp tables=scott.dept,scott.emp remap_schema=scott:system logfile=impdp.log table_exists_action=replace (表空間已存在則替換);

3)導入表空間
impdp system/manager@orcl directory=dump_dir dumpfile=tablespace.dmp tablespaces=example logfile=impdp.log;

4)導入整個數據庫
impdb system/manager@orcl directory=dump_dir dumpfile=full.dmp full=y logfile=impdp.log;

日常使用的:

把用戶jcpt中所有的表導入到lyxt用戶下
impdp lyxt/[email protected]/orcl directory=mydata dumpfile=LY.DMP   remap_schema=jcpt:lyxt logfile=ims20171122.log table_exists_action=replace
5)追加數據
impdp system/manager@orcl directory=dump_dir dumpfile=expdp.dmp schemas=systemtable_exists_action logfile=impdp.log;

 

發佈了125 篇原創文章 · 獲贊 24 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章