PL/SQL Developer 的導入導出功能底層調用 Oracle 原生 exp/imp,僅暴露部分參數。直接掌握 exp/imp 可解鎖全部能力,並解決 PL/SQL 導出視圖帶註釋報錯、數據對象分離導出等痛點。
| 模式 | 參數 | 範圍 |
|---|---|---|
| 全庫 | FULL=Y | 除系統用戶外所有對象 |
| 用戶級 | OWNER=ユーザー列表 | 指定用戶的所有權限與數據 |
| 表級 | TABLES=表列表 | 跨用戶指定表結構與數據 |
| 表空間級 | TABLESPACES=表空間列表 | 指定表空間內所有段 |
exp 按提示操作,適合臨時任務。exp user/pwd PAR=VAL ...,適合腳本調度。exp user/pwd PARFILE=params.par,參數複雜時首選,易維護版本控制。優先級:命令行 > 參數文件後值 > 參數文件前值。
| 參數 | 說明 | 典型值 |
|---|---|---|
| BUFFER | 緩衝區大小,0=單行提交,大數據量適當調大 | 默認即可 |
| FILE | 導出文件列表,支持多文件輪轉 | expdat.dmp |
| FILESIZE | 單文件最大字節,超限自動切換下一文件 | 2G (32位限制) |
| LOG | 日志文件,**強烈建議始終指定** | exp.log |
| INCTYPE | 增量備份類型:COMPLETE/CUMULATIVE/INCREMENTAL | 僅 FULL 模式有效 |
| FROMUSER/TOUSER | imp 專用,用戶映射重定向 | 跨用戶遷移必備 |
REM 導出批處理 exp_daily.bat
D:\Oracle\ora92\bin\exp userid=caittmdba/cait@YSDB_192.168.1.2 ^
owner=caittmdba file=e:\%DATE%.dmp log=e:\exp.log
配合 Windows 計劃任務,實現無人值守每日全量備份,文件名含日期自動輪轉。
REM 導入腳本 imp_restore.bat
D:\Oracle\ora92\bin\imp userid=caittmdba/cait@YSDB_192.168.1.2 ^
fromuser=caittmdba touser=caittmdba file=e:\data.dmp log=e:\imp.log
現象:升級後導出報 ORA-00942: table or view does not exist。
根因:升級腳本 catpatch.sql 未執行,導致內部視圖/同義詞缺失。
修復步驟:
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MIGRATE;
SQL> @?/rdbms/admin/catpatch.sql
-- 耗時約 30 分鐘
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
伴隨調優:適當增大 JAVA_POOL_SIZE、SHARED_POOL_SIZE 加速腳本執行。