--參考http://www.lanstonwu.com/using-datapump-export-and-import-data/
--參考http://www.cnblogs.com/wbzhao/archive/2012/04/06/2434702.html
一、前期准備
1.以SSH遠程登錄服務器,找到指定目錄下創建數據泵中間文件(.DMP)存放的目錄:
/*rmdir /home/oracle/pump_dir --刪除空目錄*/
2.以管理員sys創建邏輯目錄
create or replace directory pump_dir as '/home/oracle/pump_dir';
3.給user用戶賦予在指定目錄的操作權限,最好以sys等管理員授權
grant read,write on directory pump_dir to user;
4.查看管理理員目錄
select * from dba_directories;
/*drop directory pump_dir;--刪除目錄*/
二、導出數據
--------------------- !!! 大寫的分割線 !!! ---------------------
使用 '/as sysdba' 模式的前提是設置操作系統環境變量ORACLE_SID
export ORACLE_SID=instance_name
--------------------------------------------------------------
1.全庫導出(full)
a.expdp parfile=expdp_full_20170525.txt
--expdp_full_20170525.txt
b.expdp sysdba/pwd directory=DUMP_DIR dumpfile=expdp_full_20170525.dmp logfile=expdp_full_20170525.log full=y content=METADATA_ONLY
2.用戶模式導出(schemas)
3.表模式導出(tables)
4.限定條件導出(query)
三、導入數據
/*導入數據時要確認導入的用戶是否存在,是否有權限訪問表空間、是否具有讀寫directory的權限*/
1.指定用戶導入,只導入結構(content=METADATA_ONLY);若目標庫user1,user2已存在,則源庫和目標庫user1,user2的表空間要一致,不然會報錯;
impdp parfile=impdp_20170525.txt
--參數文件impdp_20170525.txt
2.將用戶1的數據導入用戶2 (以此類推,還可以重定義表[remap_table]、表空間[remap_tablespace]導入)
impdp parfile=impdp_20170525.txt
--參數文件impdp_20170525.txt
--/*對於后面的user2,目標庫中可以有也可以沒有,如果沒有系統會自動建立這個用戶*/這個暫時還沒有試驗過,有空可以試試
3.將用戶數據導入用戶默認表空間
四、導入遠程數據庫數據
/*由於物理空間不足或數據量太大傳輸不便,可以在目標端使用db_link連接,導入遠程數據庫數據*/
1.源端用戶賦權限;
grant datapump_exp_full_database to USER1;
2.目標庫用戶賦權限;
grant datapump_imp_full_database to USER2;
3.目標庫創建連接遠程目標數據庫DBLINK
CREATE PUBLIC DATABASE LINK TO_TEST
CONNECT TO USER1 IDENTIFIED BY password
USING '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.x.x.x)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = db_name)
)
)';
4.導入數據
impdp USER1/password NETWORK_LINK=TO_TEST REMAP_SCHEMA=USER1:USER2 TABLE_EXISTS_ACTION=TRUNCATE TABLES=USER1.TABLE_NAMEL DIRECTORY=IMPDP_DIR LOGFILE=USER1.TABLE_NAME.log CONTENT=DATA_ONLY PARALLEL=4
五、參數介紹
1.USERID:命令行的第一個參數
2.DIRECTORY:轉儲文件和日志文件存放的目錄
3.DUMPFILE:目標轉儲文件
4.LOGFILE:日志文件
5.FULL:指定全庫導出
FULL={Y | N}
6.CONTENT:指定要導出的數據,默認為ALL
CONTENT={ALL|DATA_ONLY|METADATA_ONLY}
ALL:導出對象定義及所有數據
DATA_ONLY:只導出對象數據
METADATA_ONLY:只導出對象定義
7.SCHEMAS:指定執行方案模式導出,默認為當前用戶模式
8.TABLES:指定表模式導出
9.TABLESPACES:按表空間模式導出
10.PARALLEL:並行,指定執行導出操作的並行進程個數,默認值為1
11.INCLUDE:指定導出時要包含的對象類型及相關對象
INCLUDE = object_type[:name_clause] [,… ]
eg:INCLUDE=TABLE:"IN(SELECT TABLE_NAME FROM CSB_BFB)"
12.EXCLUDE:指定導出執行時要排除的對象類型及相關對象
13.NETWORK_LINK:指定數據庫鏈名,如果要將遠程數據庫對象導出到本地例程的轉儲文件中,必須設置該選項
14.TABLE_EXISTS_ACTION={skip|append|truncate|replace}
skip:如果已存在表,則跳過並處理下一個對象;
append:為表增加數據;truncate是截斷表,然后為其增加新數據;
replace:刪除已存在表,重新建表並追加數據;