Oracle expdp/impdp匯出匯入命令及資料庫備份
EXP和IMP是客戶端工具程式,它們既可以在客戶端使用,也可以在服務端使用。
EXPDP和IMPDP是服務端的工具程式,他們只能在ORACLE服務端使用,不能在客戶端使用。
IMP只適用於EXP匯出的檔案,不適用於EXPDP匯出檔案;IMPDP只適用於EXPDP匯出的檔案,而不適用於EXP匯出檔案。
expdp或impdp命令時,可暫不指出使用者名稱/密碼@例項名 as 身份,然後根據提示再輸入,如:
expdp schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
一、建立邏輯目錄,該命令不會在作業系統建立真正的目錄,最好以system等管理員建立。
create directory dpdata1 as 'd:\test\dump';
二、檢視管理理員目錄(同時檢視作業系統是否存在,因為Oracle並不關心該目錄是否存在,如果不存在,則出錯)
select * from dba_directories;
三、給scott使用者賦予在指定目錄的操作許可權,最好以system等管理員賦予。
grant read,write on directory dpdata1 to scott;
四、匯出資料
1)按使用者導
expdp schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
2)並行程式parallel
expdp directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3
3)按表名導
expdp TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;
4)按查詢條件導
expdp directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';
5)按表空間導
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;
6)導整個資料庫
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;
五、還原資料
1)導到指定使用者下
impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;
2)改變表的owner
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;
3)匯入表空間
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;
4)匯入資料庫
impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;
5)追加資料
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION
1、Oracle11g預設對空表不分配segment,故使用exp匯出Oracle11g資料庫時,空表不會匯出。
2、設定deferred_segment_creation 引數為FALSE後,無論是空表還是非空表,都分配segment。
在sqlplus中,執行如下命令:
SQL>alter system set deferred_segment_creation=false;
檢視:
SQL>show parameter deferred_segment_creation;
該值設定後只對後面新增的表產生作用,對之前建立的空表不起作用。
3、可以使用手工為空表分配Extent的方式,來解決匯出之前建立的空表的問題。說明如下:
3.1 使用ALLOCATE EXTENT的說明
使用ALLOCATE EXTENT可以為資料庫物件分配Extent。其語法如下:
-----------
ALLOCATE EXTENT { SIZE integer [K | M] | DATAFILE 'filename' | INSTANCE integer }
-----------
可以針對資料表、索引、物化檢視等手工分配Extent。
ALLOCATE EXTENT使用樣例:
ALLOCATE EXTENT
ALLOCATE EXTENT(SIZE integer [K | M])
ALLOCATE EXTENT(DATAFILE 'filename')
ALLOCATE EXTENT(INSTANCE integer)
ALLOCATE EXTENT(SIZE integer [K | M] DATAFILE 'filename')
ALLOCATE EXTENT(SIZE integer [K | M] INSTANCE integer)
針對資料表操作的完整語法如下:
-----------
ALTER TABLE [schema.]table_name ALLOCATE EXTENT [({ SIZE integer [K | M] | DATAFILE 'filename' | INSTANCE integer})]
-----------
故,需要構建如下樣子簡單的SQL命令:
-----------
alter table aTabelName allocate extent
-----------
3.2 構建對空表分配空間的SQL命令,
查詢當前使用者下的所有空表(一個使用者最好對應一個預設表空間)。命令如下:
-----------
SQL>select table_name from user_tables where NUM_ROWS=0;
-----------
根據上述查詢,可以構建針對空表分配空間的命令語句,如下:
-----------
SQL>Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
-----------
批次輸出上述生成的SQL語句,建立C:\createsql.sql,其內容如下:
-----------
set heading off;
set echo off;
set feedback off;
set termout on;
spool C:\allocate.sql;
Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
spool off;
-----------
執行C:\createsql.sql,命令如下:
-----------
SQL>@ C:\createsql.sql;
-----------
執行完畢後,得到C:\allocate.sql檔案。
開啟該檔案會看到,已經得到對所有空表分配空間的命令SQL語句。
3.4 執行SQL命令,對空表分配空間:
執行C:\allocate.sql,命令如下:
-----------
SQL>@ C:\allocate.sql;
-----------
執行完畢,表已更改。
3.4 此時執行exp命令,即可把包括空表在內的所有表,正常匯出。
另外:Oracle11g中,對密碼是大小寫敏感的,即密碼中的字母是區分大小寫的。
在Oracle10g中及以前,密碼中的字母大小寫無所謂
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-2147146/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle expdp/impdp匯入匯出備份資料庫指令碼Oracle資料庫指令碼
- expdp impdp 資料庫匯入匯出命令詳解資料庫
- Oracle資料泵匯出匯入(expdp/impdp)Oracle
- 資料庫泵(expdp/impdp)匯入匯出流程資料庫
- oracle匯入匯出之expdp/impdpOracle
- expdp與impdp全庫匯出匯入
- Oracle使用資料泵expdp,impdp進行資料匯出匯入Oracle
- expdp與impdp全庫匯出匯入(二)
- 【EXPDP/IMPDP】使用 EXPDP/IMPDP工具“模糊”匯出和匯入
- expdp impdp只匯出匯入viewView
- oracle資料庫匯入匯出命令!Oracle資料庫
- Oracle資料庫匯入匯出。imp匯入命令和exp匯出命令Oracle資料庫
- Oracle 12c expdp和impdp匯出匯入表Oracle
- mysql資料庫備份匯入命令MySql資料庫
- 通過EXPDP/IMPDP匯出匯入遠端資料倒本地
- oracle 備份資料庫,匯出資料庫Oracle資料庫
- Oracle資料庫的匯入和匯出命令Oracle資料庫
- 使用EXPDP/IMPDP匯入匯出表中資料/後設資料測試
- Oracle資料庫備份與恢復之匯出/匯入(EXP/IMP)、熱備份和冷備份Oracle資料庫
- oracle10g expdp資料泵的bug,按schema匯出,匯入impdp時無jobOracle
- oracle 10.2.0.4 expdp全庫匯出 和分使用者impdp匯入的記錄Oracle
- Oracle資料匯入匯出imp/exp命令Oracle
- Oracle資料庫的常用命令和匯入匯出Oracle資料庫
- Oracle資料匯入匯出imp/exp命令(轉)Oracle
- Oracle資料庫備份與恢復之exp/imp(匯出與匯入裝庫與卸庫)Oracle資料庫
- expdp/impdp中匯出/匯入任務的管理和監控
- IMPDP匯入遠端資料庫資料庫
- MYSQL資料匯出備份、匯入的幾種方式MySql
- Oracle 資料匯入匯出Oracle
- Oracle資料匯入匯出Oracle
- Oracle資料庫備份與恢復之一:exp/imp(匯出與匯入裝庫與卸庫)Oracle資料庫
- Oracle 資料庫備份與恢復總結-exp/imp (匯出與匯入裝庫與卸庫)Oracle資料庫
- oracle資料泵備份(Expdp命令)Oracle
- 資料庫的匯入匯出資料庫
- mysql 資料庫匯入匯出MySql資料庫
- MySQL資料庫匯入匯出MySql資料庫
- 針對資料泵匯出 (expdp) 和匯入 (impdp)工具效能降低問題的檢查表
- Oracle expdp資料泵遠端匯出Oracle