Data Pump 匯入作業 SYSTEM.SYS_IMPORT_FULL_03 運行 3 小時後突然終止,僅提示「因致命錯誤停止」,無其他錯誤代碼。
參考《How to Diagnose Oracle Data Pump》設定事件 10046/30000,獲取追蹤檔 orcl_dm00_10856.trc。關鍵片段顯示 Worker 進程意外退出,但無明確錯誤碼。
Tue Dec 09 02:00:12 2014 Exception [type: ACCESS_VIOLATION, UNABLE_TO_READ] [ADDR:0x0] [PC:0x14575B408, kpodpals()+5174] ORA-07445: 出現異常錯誤: 核心轉儲 [kpodpals()+5174] [ACCESS_VIOLATION] [ADDR:0x0] [PC:0x14575B408] [UNABLE_TO_READ] []
關鍵資訊:錯誤發生在 kpodpals() 函數,屬於 Direct Path Load 相關模組,提示記憶體訪問違規(空指標)。
kpodpals()+5174 → kpodpp() → opiodr() → kpurcsc() → kupd_initDirPath() → OCIDirPathPrepare()
呼叫鏈指向 Direct Path API 準備階段,通常與大物件(LOB)、並行度、記憶體分配有關。
| 可能原因 | 驗證方式 | 解決措施 |
|---|---|---|
| LOB 欄位超大導致 PGA 不足 | 檢查匯入表結構,確認 LOB 段大小 | 調大 PGA_AGGREGATE_TARGET;或改用 EXTERNAL TABLE 分批載入 |
| 並行度過高導致記憶體碎片 | 查看匯入命令 PARALLEL 參數 | 降低並行度(如 PARALLEL=4) |
| 已知 Bug (11.2.0.1~11.2.0.3) | 對照 MOS Doc ID 1345678.1 | 打補丁至 11.2.0.4 或升級 12c/19c |
| 目標表存在損壞的 LOB 索引 | ANALYZE TABLE ... VALIDATE STRUCTURE CASCADE; | 重建 LOB 索引或先 TRUNCATE TABLE 再匯入 |
ADRCI 打包 IPS 提交 Oracle Support。TABLE_EXISTS_ACTION=TRUNCATE 配合 PARALLEL=2 減少記憶體壓力。