您好,登錄后才能下訂單哦!
數據泵EXPDP導出工具和IMPDP導入工具的使用
一、EXPDP和IMPDP使用說明
Oracle Database 10g引入了最新的數據泵(Data Dump)技術,數據泵導出導入(EXPDP和IMPDP)的作用
1)實現邏輯備份和邏輯恢復。
2)在數據庫用戶之間移動對象。
3)在數據庫之間移動對象。
4)實現表空間搬移。
二、數據泵導出導入與傳統導出導入的區別
在10g之前,傳統的導出和導入分別使用EXP工具和IMP工具,從10g開始,不僅保留了原有的EXP和IMP工具,還提供了數據泵導出導入工具EXPDP和IMPDP。使用EXPDP和IMPDP時應該注意的事項:
1)EXP和IMP是客戶端工具程序,它們既可以在可以客戶端使用,也可以在服務端使用。
2)EXPDP和IMPDP是服務端的工具程序,他們只能在ORACLE服務端使用,不能在客戶端使用。
3)IMP只適用于EXP導出文件,不適用于EXPDP導出文件;IMPDP只適用于EXPDP導出文件,而不適用于EXP導出文件。
4)數據泵導出包括按表導出,按用戶導出,按表空間導出,按數據庫導出4種方式。
三、EXPDP/IMPDP參數說明
可通過expdp/impdp help=y查看:
$ expdp help=y $ impdp help=y
四、EXPDP實戰案例
使用EXPDP工具時,其轉儲文件只能被存放在DIRECTORY對象對應的OS目錄中,而不能直接指定轉儲文件所在的OS目錄.因此,使用EXPDP工具時,必須首先建立DIRECTORY對象.并且需要為數據庫用戶授予使用DIRECTORY對象權限。
操作步驟如下:
a)命令行打開sqlplus
sqlplus /nolog conn / as sysdba
b)創建邏輯目錄,該命令不會在操作系統創建真正的目錄(最好手工先建好),最好以administrator等管理員創建。
SQL>create directory dir as 'd:\dump'; --dir名稱可以隨便命名 需要手工創建d:\dump
c)查看管理理員目錄(同時查看操作系統中是否存在,因為Oracle并不關心該目錄是否存在,如果不存在,則出錯)
SQL>select * from dba_directories;
d)給scott用戶賦予在指定目錄的操作權限,最好以sys,system等管理員賦予。
SQL>grant read,write on directory dir to scott;
e)在unix下要注意directory目錄的讀寫權限問題。
更改directory目錄文件夾的權限:chown -R oracle:dba /dump_dir。
1)按表導出表
$ expdp scott/tiger directory=dump_dir DUMPFILE=dept.dmp TABLES=dept;
多表導出用逗號分隔:
$ expdp scott/tiger tables=emp,dept dumpfile=expdp.dmp directory=dump_dir;
2)按用戶導出
$ expdp scott/tiger directory=dump_dir dumpfile=schema.dmp logfile=schema.log schemas=system;
3)按表空間導出
$ expdp scott/tiger directory=dump_dir dumpfile=tb.dmp logfile=tb.log tablespaces=users
4)全庫導出
$ expdp system/manager directory=dump_dir dumpfile=full.dmp full=Y; $ expdp scott/tiger directory=dump_dir dumpfile=full.dmp full=Y;
注:提示scott用戶沒有相應的權限,給scott相應的權限或使用system來做全庫導出 。
SQL> grant exp_full_database to scott; Grant succeeded.
5)并行進程parallel導出
$ expdp scott/tiger@orcl directory=dump_dir dumpfile=scott3.dmp parallel=40 job_name=scott3;
6)按查詢條件導
$ expdp scott/tiger directory=dump_dir dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';
六、IMPDP 實戰案例
1)按表導入
刪除用戶scott的emp表,在full.dmp中導入emp到用戶scott
$ impdp backup/backup1 directory=dump_dir dumpfile=full.dmp tables=scott.emp remap_schema=scott:scott
將scott.test表導入的SYSTEM用戶下
$ impdp backup/backup1 directory=dump_dir dumpfile=full.dmp tables=scott.test remap_schema=scott:system
注意,如果要將表導入到其他方案中,必須指定REMAP SCHEMA選項
2)導到指定用戶下
按用戶導入
impdp scott/tiger@orcl DIRECTORY=dump_dir DUMPFILE=expdp.dmp SCHEMAS=scott logfile=impdp.log;
導入時將scott用戶所屬對象轉換為system用戶
$ impdp system/manager DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=scott REMAP_SCHEMA=scott:system;
3)按表空間導入
$ impdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACES=user01
4)全庫導入
$ impdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y
5)expdp/impdp 不同用戶,不同表空間的使用
假設a用戶的默認表空間是a,導出用戶a所有數據:
SQL> conn / as sysdba SQL> create directory dir as '/home/oracle/'; SQL> grant read,write on directory dir to system;
$ expdp system/oracle directory=dir dumpfile=data.dmp schemas=a logfile=data.log
impdp導入a用戶所有數據到b,并且轉換表空間a為b:
SQL> conn sys / as sysdba SQL> create directory dir as '/home/oracle/'; SQL> grant read,write on directory dir to system;
$ impdp system/oracle directory=dir dumpfile=data.dmp remap_tablespace=a:b remap_schema=a:b logfile=data.log
解釋:
remap_schema=a:b 將數據的schema從a轉換為b
remap_tablespace=a:b 將數據的tablespace從a轉換為b
注意:
如果oracle是10g,要加參數EXCLUDE=TABLE_STATISTICS選項將table_statistics對象過濾。否則會出現數據泵導入中table_statistics長時間等待。
總結:
執行impdp時無需創建b用戶,在導入時會自動創建并改名用戶a為b(擁有a的所有權限等),自動設置默認表空間為轉換后的表空間b。如果有多個表空間需要轉換,則使用多個remap_tablespace=源表空間:目標表空間。此種方法只限于支持oracle10g以上版本。
6)在全庫備份文件中導入一張表到數據庫
$ impdp backup/backup1 directory=PUMP_DIR dumpfile=expdp.dmp include=table:\"=\'T1\'\" logfile=impdp.log table_exists_action=replace;
7)在全庫備份文件中導入一張表并轉換表空間和owner
$impdp backup/backup1 directory=dump_dir dumpfile=expdp.dmp tables=t1 REMAP_TABLESPACE=DATA:USERS remap_schema=scott:system table_exists_action=replace;
8)通過dblink遠程導入
$ impdp system/admin directory=mydir network_link=dblink16_zk schemas=lgb_zk remap_schema=lgb_zk:lgb_zk logfile=lgbzk1018.log PARALLEL=2
9)通過dblink指定參數文件遠程導入
參數說明
NETWORK_LINK=dblink
schemas=源用戶
remap_schema=源用戶:目標用戶
PARALLEL=2
EXCLUDE=TABLE:"IN('A','B','C','D')" 排除的表
通過參數文件遠程導入
vim mypar.par network_link=dblink16 schemas=zs2new remap_schema=zs2new:zs2new EXCLUDE=TABLE:"IN('A','B','C','D')" PARALLEL=2
$ impdp system/admin directory=mydir parfile=h:\dump\mypar.par;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。