簡介:
資料泵使用指南
10g開始引入了最新的資料泵(Data Dump)技術,使DBA或開發人員可以將資料庫中繼資料(對象定義)和資料快速移動到另一個oracle資料庫中.
資料泵匯出匯入(EXPDP和IMPDP)的作用
1,實現邏輯備份和邏輯恢複.
2,在資料庫使用者之間移動對象.
3,在資料庫之間移動對象
4,實現資料表空間搬移.
資料泵匯出匯入與傳統匯出匯入的區別
在10g之前,傳統的匯出和匯入分別使用EXP工具和IMP工具,從10g開始,不僅保留了原有的EXP和IMP工具,還提供了資料泵匯出匯入工具EXPDP和IMPDP.使用EXPDP和IMPDP時應該注意的事項;
EXP和IMP是客戶段工具程式,它們既可以在可以用戶端使用,也可以在服務端使用.
EXPDP和IMPDP是服務端的工具程式,他們只能在ORACLE服務端使用,不能在用戶端使用
IMP只適用於EXP匯出檔案,不適用於EXPDP匯出檔案;IMPDP只適用於EXPDP匯出檔案,而不適用於EXP匯出檔案.
資料泵匯出包括匯出表,匯出方案,匯出資料表空間,匯出資料庫4種方式.
匯出功能
使用EXPDP工具時,其轉儲檔案只能被存放在DIRECTORY對象對應的OS目錄中,而不能直接指定轉儲檔案所在的OS目錄.
因此,使用EXPDP工具時,必須首先建立DIRECTORY對象.並且需要為資料庫使用者授予使用DIRECTORY對象許可權.
CREATE DIRECTORY dump dir AS '/home/oracle/dump_dir';
GRANT READ, WIRTE ON DIRECTORY dump_dir TO public;
注意:這個目錄賦許可權給oracle使用者
1,匯出表
Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp logfile=tab.log TABLES=dept,emp
2,匯出方案
Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=system,scott
3.匯出資料表空間
Expdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACES=user01,user02
4,匯出資料庫
Expdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=Y
我們經常用到的是第二種
expdp system/**** directory=dump_dir dumpfile=ngboss_yueyang20130514.dmp logfile=expyueyang20130514.log schemas=ngboss_yueyang
對參數功能不瞭解請expdp -help查看
匯入功能
和匯出一樣,先要建立DIRECTORY對象.並且需要為資料庫使用者授予使用DIRECTORY對象許可權.
CREATE DIRECTORY dump dir AS '/home/oracle/dump_dir';
GRANT READ, WIRTE ON DIRECTORY dump_dir TO public;
注意:這個目錄賦許可權給oracle使用者
將dmp檔案copy到對應的目錄
同樣有四種情況
1, 匯入表
Impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=dept,emp
Impdp system/manage DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=scott.dept,scott.emp REMAP_SCHEMA=SCOTT:SYSTEM
第一種方法表示將DEPT和EMP表匯入到SCOTT方案中,第二種方法表示將DEPT和EMP表匯入的SYSTEM方案中.
注意,如果要將表匯入到其他方案中,必須指定REMAP SCHEMA選項.
2,匯入方案
Impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=scott
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
針對我們系統的特點有兩種情況
1.匯入庫的使用者名稱和資料表空間跟匯出的庫一致,例如從201上的ngboss_yueyang匯入到196上的ngboss_yueyang使用者上,兩邊的資料表空間名也一樣
impdp system/**** directory=dump_dir dumpfile=ngboss_yueyang20130514.dmp logfile=impngboss_yueyang20130514.log schemas=ngboss_yueyang
2.匯入庫的使用者名稱和資料表空間跟匯出的庫不一致
例如:從嶽陽的生產庫上匯出的庫匯入到公司201上ngboss_yueyang使用者上
使用者名稱和資料表空間名都不一樣
impdp system/**** directory=dump_dir dumpfile=ngboss20130513.dmp logfile=impyueyang20130514.log remap_schema=ngboss:ngboss_yueyang remap_tablespace=ngboss_data:ngboss_yy_data,NGBOSS_DATA_CRM1:NGBOSS_YY_DATA_CRM1,NGBOSS_DATA_CRM2:NGBOSS_YY_DATA_CRM2,NGBOSS_DATA_HIST:NGBOSS_YY_DATA_HIST,NGBOSS_DATA_HIST_CRM:NGBOSS_YY_DATA_HIST_CRM,NGBOSS_INDX:NGBOSS_YY_INDX,NGBOSS_INDX_CRM:NGBOSS_YY_INDX_CRM,NGBOSS_WORK:NGBOSS_YY_WORK
對參數功能不瞭解請impdp -help查看
注意事項:用dba賬戶匯出的dmp檔案必須要用dba賬戶匯入。
推薦文章:
- ORACLEDatabase Backup與還原命令 http://www.blogjava.net/paulwong/archive/2013/05/12/399172.html