CONN system/manager
CREATE USER target_user IDENTIFIED BY password;
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE PROCEDURE,
CREATE SEQUENCE, CREATE TRIGGER, CREATE SYNONYM,
UNLIMITED TABLESPACE,
IMP_FULL_DATABASE, EXP_FULL_DATABASE TO target_user;
-- IMP_FULL_DATABASE/EXP_FULL_DATABASE 為執行全庫導入導出的關鍵角色
exp system/manager@ORCL file=full_backup.dmp full=y log=full_exp.log
imp system/manager@ORCL file=full_backup.dmp full=y log=full_imp.log ignore=y
ignore=y:忽略物件已存在錯誤(如表已存在),繼續導入資料。
建立參數檔 import.par:
FROMUSER=SOURCE_SCHEMA
TOUSER=TARGET_SCHEMA
ROWS=Y
INDEXES=Y
GRANTS=Y
CONSTRAINTS=Y
BUFFER=409600
FILE=/backup/source_20240101.dmp
LOG=/backup/imp_20240101.log
執行:imp parfile=import.par
適用場景:測試環境克隆、Schema 重命名、多租戶資料隔離。
feedback=1000,每 1000 行顯示一個 .,避免游標閃爍無回饋。exp ... tables=table1 query="WHERE created_date > SYSDATE-30"(雙引號轉義視 OS 而定)。gzip:exp ... | gzip > backup.dmp.gz(Unix/Linux)。backup.bat 含 exp ...,配合「工作排程器」每日執行。| 錯誤代碼 | 原因 | 對策 |
|---|---|---|
| IMP-00017 | 物件已存在 | 加 ignore=y 或先 DROP 物件 |
| IMP-00058 | 字符集不匹配 | 檢查 NLS_LANG、目標庫字符集是否為源庫超集 |
| EXP-00008 | ORACLE_SID 未設定 | 設定 ORACLE_SID 或指定 @TNS_ALIAS |
| ORA-39002 | Data Pump 權限不足 | 授予 DATAPUMP_EXP_FULL_DATABASE / DATAPUMP_IMP_FULL_DATABASE |