首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle exp/imp 導入導出全攻略:參數詳解、實戰案例與 ORA-942 錯誤修復

     編輯:Oracle 資料庫基礎

工具本質:PL/SQL Developer 只是前端

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/TOUSERimp 專用,用戶映射重定向跨用戶遷移必備

實戰案例:自動化每日備份

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 導出報錯

現象:升級後導出報 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 加速腳本執行。

避坑提醒

  • exp/imp 為邏輯備份,**不替代 RMAN 物理備份**(無法時間點恢復、不含未提交事務、恢復慢)。
  • 跨版本導入(高版本導出→低版本導入)不支持,反向通常兼容但需測試。
  • 大數據量場景優先考慮 Data Pump (expdp/impdp),並行度、網絡導入、可重啟特性全面優於 exp/imp。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved