導出服務器和導入服務器都需要有oracle用戶密碼(密碼爲空請忽略)
一、都需要用到的基礎命令
# 切換到oracle用戶,如果該用戶設置了密碼會提示輸入密碼
su - oracle
#切換到root用戶,會提示你輸入密碼
su root
#給文件夾賦權限,因爲有時候在進行導入導出時會遇到oracle用戶沒有對dmp文件的讀寫權限
chmod
chmod命令參考:chmod—菜鳥教程
二、導出dmp
第一步:首先執行如下sql,找到要導出文件所在的表空間名稱(在導入時會用的到)
SELECT a.tablespace_name "表空間名",
total "表空間大小",
free "表空間剩餘大小",
(total - free) "表空間使用大小",
total / (1024 * 1024 * 1024) "表空間大小(G)",
free / (1024 * 1024 * 1024) "表空間剩餘大小(G)",
(total - free) / (1024 * 1024 * 1024) "表空間使用大小(G)",
round((total - free) / total, 4) * 100 "使用率 %"
FROM (SELECT tablespace_name, SUM(bytes) free
FROM dba_free_space
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM(bytes) total
FROM dba_data_files
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name;
第二步:查詢一些導出要用到參數:複製下圖參數(導入導出都會用到)
第三步:導出命令
expdp
用戶名/密碼
dumpfile=xxx.dmp
logfile=xxx.log
directory=DATA_PUMP_DIR
exclude=TABLE:\"LIKE \'表名稱%\'\"
- dumpfile:指定導出dmp文件名稱
- logfile:指定導出時日誌文件名稱
- directory:指定dmp文件的存儲目錄(取第二步查詢出來的值)
- exclude/include(非必須):導入選項,不包括/包括哪些表
至此導入成功
三、文件轉移
數據泵導入導出,由於大多數情況下是跨服務器的,在這裏介紹一個linux系統服務器間文件傳輸的命令
scp:
把當前一個文件copy到遠程服務器上:
scp /home/a.txt root@主機ip:文件要複製到的路徑
從遠程主機copy文件到當前主機:
scp 要拷貝的文件名 root@遠程主機ip:遠程主機上該文件的目錄 保存到本機的目錄
四、數據泵導入
執行導出操作的第一步和第二步,獲取導入需要的參數
導入命令
impdp
用戶名/密碼
remap_schema=導出用戶名:導入用戶名
directory=DATA_PUMP_DIR(即導入dmp文件的存放目錄)
remap_tablespace=導出表空間:導入表空間
dumpfile=導入的文件名
logfile=導入日誌
transform=OID:N(非必填,解決導入過程中創建對象報錯等)
等待導入結束