【IMPDP】使用工具IMPDP匯入資料時ORA-39002、ORA-39070錯誤排查
今天在使用IMPDP完成資料匯入的過程中遇到“ORA-39002、ORA-39070……”連續報錯。
導致問題原因很簡單,但是提示的錯誤資訊內容比較“詭異”,為了朋友們少走彎路,簡單記錄一下這個問題的處理過程。
1.問題再現
sec@secDB /db_backup/dpump_dir$ impdp sec/sec directory=dpump_dir dumpfile=20100604020437_sec.dmp logfile=impdp.log
Import: Release 10.2.0.3.0 - 64bit Production on Friday, 04 June, 2010 14:39:16
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 475
ORA-29283: invalid file operation
2.問題分析
這裡的“ORA-39070”提到的“Unable to open the log file.”初看非常的“詭異”,到底無法開啟什麼日誌檔案呢?難道是沒有許可權在這個目錄下寫檔案?經過“touch”測試排除了這種可能性。
不管怎麼說,這個問題與檔案操作相關。順著這個思路繼續前行,終於發現原來資料庫中的directory資料庫物件所指向的目錄為“/oradata/dpump_dir”,而在該作業系統中根本沒有這個目錄,因目錄不存在,日誌檔案也就理所當然的無處可寫。
不過這個報錯的資訊卻是不夠明顯,如果能夠給出更多的檢查和明確的報錯資訊就更好了。
sys@ora10g> col owner for a6
sys@ora10g> col DIRECTORY_NAME for a20
sys@ora10g> col DIRECTORY_PATH for a30
sys@ora10g> select * from dba_directories where DIRECTORY_NAME = 'DPUMP_DIR';
OWNER DIRECTORY_NAME DIRECTORY_PATH
------ -------------------- ------------------------------
SYS DPUMP_DIR /oradata/dpump_dir
3.問題處理
發現問題後,處理方法就簡單了許多,只需要重新建立directory資料庫物件即可。
sys@sec> drop directory dpump_dir;
Directory dropped.
sys@sec> create directory dpump_dir as '/db_backup/dpump_dir';
Directory created.
sys@sec> grant read, write on directory dpump_dir to public;
Grant succeeded.
4.導致該問題的潛在原因
在10g環境中即使在建立directory資料庫物件的過程中即使所引用的目錄不存在,該命令也是可以正常建立的,這就是容易誤操作的根本原因。
sys@ora10g> create directory dpump_dir_test as '/sec/ool/er';
Directory created.
小心陷阱。
5.小結
從該問題的處理過程中我們可以看到,在報錯資訊不實很明顯的時候我們往往手足無措。越是在這樣的場景,我們越應該沉著冷靜,從整個操作的源頭一步一步的去排查,終有柳暗花明之時。
Good luck.
secooler
10.06.04
-- The End --
導致問題原因很簡單,但是提示的錯誤資訊內容比較“詭異”,為了朋友們少走彎路,簡單記錄一下這個問題的處理過程。
1.問題再現
sec@secDB /db_backup/dpump_dir$ impdp sec/sec directory=dpump_dir dumpfile=20100604020437_sec.dmp logfile=impdp.log
Import: Release 10.2.0.3.0 - 64bit Production on Friday, 04 June, 2010 14:39:16
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 475
ORA-29283: invalid file operation
2.問題分析
這裡的“ORA-39070”提到的“Unable to open the log file.”初看非常的“詭異”,到底無法開啟什麼日誌檔案呢?難道是沒有許可權在這個目錄下寫檔案?經過“touch”測試排除了這種可能性。
不管怎麼說,這個問題與檔案操作相關。順著這個思路繼續前行,終於發現原來資料庫中的directory資料庫物件所指向的目錄為“/oradata/dpump_dir”,而在該作業系統中根本沒有這個目錄,因目錄不存在,日誌檔案也就理所當然的無處可寫。
不過這個報錯的資訊卻是不夠明顯,如果能夠給出更多的檢查和明確的報錯資訊就更好了。
sys@ora10g> col owner for a6
sys@ora10g> col DIRECTORY_NAME for a20
sys@ora10g> col DIRECTORY_PATH for a30
sys@ora10g> select * from dba_directories where DIRECTORY_NAME = 'DPUMP_DIR';
OWNER DIRECTORY_NAME DIRECTORY_PATH
------ -------------------- ------------------------------
SYS DPUMP_DIR /oradata/dpump_dir
3.問題處理
發現問題後,處理方法就簡單了許多,只需要重新建立directory資料庫物件即可。
sys@sec> drop directory dpump_dir;
Directory dropped.
sys@sec> create directory dpump_dir as '/db_backup/dpump_dir';
Directory created.
sys@sec> grant read, write on directory dpump_dir to public;
Grant succeeded.
4.導致該問題的潛在原因
在10g環境中即使在建立directory資料庫物件的過程中即使所引用的目錄不存在,該命令也是可以正常建立的,這就是容易誤操作的根本原因。
sys@ora10g> create directory dpump_dir_test as '/sec/ool/er';
Directory created.
小心陷阱。
5.小結
從該問題的處理過程中我們可以看到,在報錯資訊不實很明顯的時候我們往往手足無措。越是在這樣的場景,我們越應該沉著冷靜,從整個操作的源頭一步一步的去排查,終有柳暗花明之時。
Good luck.
secooler
10.06.04
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-664406/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- impdp匯入報ORA-00001 ORA-04088錯誤
- Oracle資料泵匯出匯入(expdp/impdp)Oracle
- Oracle使用資料泵expdp,impdp進行資料匯出匯入Oracle
- Oracle 19.3資料庫impdp匯入view時hang住Oracle資料庫View
- 19c資料庫impdp匯入view時hang住資料庫View
- Oracle 28.6資料庫impdp匯入view時hang@11Oracle資料庫View
- ORACLE 資料泵impdp匯入報錯之ORA-31693 ORA-04098Oracle
- 使用資料泵匯入 ORA-39002,ORA-39070,ORA-29283,ORA-06512,ORA-29283
- 然後再全庫匯入排除view資料庫在impdp匯入View資料庫
- Oracle 11g impdp 先資料後索引匯入方法Oracle索引
- Oracle 12.1.0.2 impdp匯入慢診斷Oracle
- oracle10g expdp資料泵的bug,按schema匯出,匯入impdp時無jobOracle
- Oracle 12c expdp和impdp匯出匯入表Oracle
- 使用資料泵(expdp、impdp)遷移資料庫流程資料庫
- oracle資料庫的impdp,expdpOracle資料庫
- 使用impdp,expdp資料泵進入海量資料遷移
- impdp/expdp報錯: ORA-39064: 無法寫入日誌檔案 ORA-29285: 檔案寫入錯誤
- Oracle OCP(57):IMPDPOracle
- Oracle 11g用impdp還原資料庫Oracle資料庫
- 【故障處理】如何避免在執行impdp後出現ORA-00001錯誤
- 匯入sql時報日期型別錯誤SQL型別
- 資料泵datapump(expdp/impdp)的parfile用法,避免跳脫字元字元
- 【Datapump】Oracle資料泵遷移資料命令參考(expdp/impdp說明)Oracle
- mongodb使用自帶命令工具匯出匯入資料MongoDB
- 故障分析 | MySQL 使用 load data 匯入資料錯誤的一個場景MySql
- Oracle impdp遷移資料後主鍵丟失故障處理Oracle
- IMPDP分割槽表注意事項
- [20200620]expdp impdp exclude引數.txt
- expdp/impdp變慢 (Doc ID 2469587.1)
- 【Data Pump】expdp/impdp Job基本管理
- oracle dblink用法總結和expdp和impdp利用dblink倒入匯出到本地Oracle
- [20200620]IMPDP TRANSFORM引數再探究.txtORM
- expdp/impdp 詳細引數解釋
- Oracle用資料泵匯入資料包12899的錯誤碼解決方法Oracle
- IMPDP匯入沒有某個表空間的處理方法__加上引數TRANSFORM就可以了ORM
- 匯入excel 資料時間Excel
- impdp導致主鍵索引的變化索引
- impdp和expdp用法及引數介紹
- Linux下執行資料泵expdp和impdp命令,字元轉義案例兩則Linux字元