Solaris 下 Oracle impdp 过程中出现的问题
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
解決方法參考1:
今天在使用IMPDP完成數(shù)據(jù)導(dǎo)入的過程中遇到“ORA-39002、ORA-39070……”連續(xù)報錯。
導(dǎo)致問題原因很簡單,但是提示的錯誤信息內(nèi)容比較“詭異”,為了朋友們少走彎路,簡單記錄一下這個問題的處理過程。
1.問題再現(xiàn)
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.”初看非常的“詭異”,到底無法打開什么日志文件呢?難道是沒有權(quán)限在這個目錄下寫文件?經(jīng)過“touch”測試排除了這種可能***。
不管怎么說,這個問題與文件操作相關(guān)。順著這個思路繼續(xù)前行,終于發(fā)現(xiàn)原來數(shù)據(jù)庫中的directory數(shù)據(jù)庫對象所指向的目錄為“/oradata/dpump_dir”,而在該操作系統(tǒng)中根本沒有這個目錄,因目錄不存在,日志文件也就理所當(dāng)然的無處可寫。
不過這個報錯的信息卻是不夠明顯,如果能夠給出更多的檢查和明確的報錯信息就更好了。
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.問題處理
發(fā)現(xiàn)問題后,處理方法就簡單了許多,只需要重新創(chuàng)建directory數(shù)據(jù)庫對象即可。
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.導(dǎo)致該問題的潛在原因
在10g環(huán)境中即使在創(chuàng)建directory數(shù)據(jù)庫對象的過程中即使所引用的目錄不存在,該命令也是可以正常創(chuàng)建的,這就是容易誤操作的根本原因。
sys@ora10g> create directory dpump_dir_test as '/sec/ool/er';
Directory created.
小心陷阱。
5.小結(jié)
導(dǎo)致問題原因很簡單,但是提示的錯誤信息內(nèi)容比較“詭異”,為了朋友們少走彎路,簡單記錄一下這個問題的處理過程。
1.問題再現(xiàn)
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.”初看非常的“詭異”,到底無法打開什么日志文件呢?難道是沒有權(quán)限在這個目錄下寫文件?經(jīng)過“touch”測試排除了這種可能***。
不管怎么說,這個問題與文件操作相關(guān)。順著這個思路繼續(xù)前行,終于發(fā)現(xiàn)原來數(shù)據(jù)庫中的directory數(shù)據(jù)庫對象所指向的目錄為“/oradata/dpump_dir”,而在該操作系統(tǒng)中根本沒有這個目錄,因目錄不存在,日志文件也就理所當(dāng)然的無處可寫。
不過這個報錯的信息卻是不夠明顯,如果能夠給出更多的檢查和明確的報錯信息就更好了。
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.問題處理
發(fā)現(xiàn)問題后,處理方法就簡單了許多,只需要重新創(chuàng)建directory數(shù)據(jù)庫對象即可。
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.導(dǎo)致該問題的潛在原因
在10g環(huán)境中即使在創(chuàng)建directory數(shù)據(jù)庫對象的過程中即使所引用的目錄不存在,該命令也是可以正常創(chuàng)建的,這就是容易誤操作的根本原因。
sys@ora10g> create directory dpump_dir_test as '/sec/ool/er';
Directory created.
小心陷阱。
5.小結(jié)
從該問題的處理過程中我們可以看到,在報錯信息不實很明顯的時候我們往往手足無措。越是在這樣的場景,我們越應(yīng)該沉著冷靜,從整個操作的源頭一步一步的去排查,終有柳暗花明之時。
解決方法參考2:
?用 oracle ?用戶登錄后 把 directory ?指定的路徑 賦予權(quán)限
chown oracle /data_bak然后再chmod 分別給文件夾 及文件賦予權(quán)限
錯誤二:
ORA-31688: Worker process failed during startup.
一般我們在修改字符集時,會把兩個processes參數(shù)設(shè)置為0。
shutdown immediate;
STARTUP MOUNT;
ALTER SESSION SET SQL_TRACE=TRUE;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; ?
ALTER SYSTEM SET AQ_TM_PROCESSES=0; ?--這個參數(shù)默認就是0
ALTER DATABASE OPEN;
#ALTER ?DATABASE ?CHARACTER ?SET ?INTERNAL_USE ?ZHS16GBK;
配置好 重啟 用 startup 命令啟動
然后執(zhí)行 imppd 成功
轉(zhuǎn)載于:https://blog.51cto.com/cuug520/1424382
總結(jié)
以上是生活随笔為你收集整理的Solaris 下 Oracle impdp 过程中出现的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lucene中对不同的域使用不同的分析器
- 下一篇: net.sf.json.JSONArra