資料遷移、備份還原、環境複製的核心工具。10g 前使用傳統 exp/imp (客戶端執行);10g+ 推薦 Data Pump expdp/impdp (伺服器端並行、高效能、支援網路導入)。
-- 全庫匯出
exp user/pass@orcl FILE=d:\backup\full.dmp LOG=d:\backup\full.log FULL=Y
-- 指定 Schema
exp user/pass@orcl FILE=d:\backup\schemas.dmp LOG=... OWNER=(user1,user2)
-- 指定表
exp user/pass@orcl FILE=... TABLES=(t1,t2)
-- 查詢條件匯出 (WHERE 子句)
exp user/pass@orcl FILE=... TABLES=(t1) QUERY="WHERE col LIKE '00%'"
-- 全庫匯入
imp user/pass@orcl FILE=d:\backup\full.dmp LOG=... FULL=Y
-- 忽略已存在表 (IGNORE=Y)
imp user/pass@orcl FILE=... FULL=Y IGNORE=Y
-- 同名使用者間表級匯入
imp user/pass@orcl FILE=... TABLES=(t1)
-- 跨使用者匯入 (FROMUSER → TOUSER)
imp user/pass@orcl FILE=... FROMUSER=userA TOUSER=userB
前置步驟 (一次設定):
-- 1. 建立目錄物件 (指向資料庫伺服器端路徑)
CREATE DIRECTORY dp_dir AS 'D:\backup\dp_dir';
-- 2. 授權
GRANT READ, WRITE ON DIRECTORY dp_dir TO username;
-- 3. 查看目錄權限
SELECT privilege, directory_name, directory_path
FROM user_tab_privs t, all_directories d
WHERE t.table_name(+) = d.directory_name;
| 模式 | 指令範例 |
|---|---|
| Schema 模式 | expdp user/pass@orcl SCHEMAS=user1 DIRECTORY=dp_dir DUMPFILE=exp_user1.dmp LOGFILE=exp_user1.log JOB_NAME=job1 |
| 表模式 | expdp user/pass@orcl TABLES=user1.t1,user1.t2 DIRECTORY=dp_dir DUMPFILE=exp_tabs.dmp LOGFILE=... JOB_NAME=job2 |
| 查詢條件 | expdp user/pass@orcl TABLES=user1.t1 QUERY='WHERE rownum<10' DIRECTORY=dp_dir DUMPFILE=... JOB_NAME=job3 |
| 表空間模式 | expdp user/pass@orcl TABLESPACES=ts_data DIRECTORY=dp_dir DUMPFILE=... JOB_NAME=job4 |
| 全庫模式 | expdp user/pass@orcl FULL=Y DIRECTORY=dp_dir DUMPFILE=full.dmp LOGFILE=full.log JOB_NAME=job_full |
DIRECTORY 參數必須置於最前,否則報 ORA-39070/ORA-39087。JOB_NAME 便於監控與重啟 (expdp ... ATTACH=job_name)。| 模式 | 指令範例 |
|---|---|
| 表級匯入 | impdp user/pass@orcl TABLES=t1 DIRECTORY=dp_dir DUMPFILE=exp.dmp LOGFILE=imp.log JOB_NAME=job1 |
| Schema 級 (含使用者建立) | impdp user/pass@orcl SCHEMAS=user1 DIRECTORY=dp_dir DUMPFILE=exp.dmp LOGFILE=... JOB_NAME=job2 |
| 網路導入 (無 DMP,直接源→目標) | impdp user/pass@target DIRECTORY=dp_dir NETWORK_LINK=source_db_link TABLES=t1 LOGFILE=... JOB_NAME=job3 |
| 重新對應表空間 | impdp system/pass DIRECTORY=dp_dir DUMPFILE=gwm.dmp REMAP_TABLESPACE=old_ts:new_ts |
| 全庫匯入 | impdp user/pass@orcl FULL=Y DIRECTORY=dp_dir DUMPFILE=full.dmp LOGFILE=full.log JOB_NAME=job_full |
-- 11g → 10g 匯出
expdp ... VERSION=10.2.0.1.0
-- 10g → 11g 匯入
impdp ... VERSION=10.2.0.1.0
急救技巧: 用 Notepad++ 開啟 .dmp 檔,修改檔頭版本號 (11gR2: V11.02.00, 11gR1: V11.01.00, 10g: V10.02.01) 可嘗試強制相容,但非官方支援,需謹慎驗證。
emca -repos create|recreate|drop
emca -config dbcontrol db
emca -deconfig dbcontrol db
emca -reconfig ports -DBCONTROL_HTTP_PORT 1160
emctl start|stop|status dbconsole