最初由 zhpsam 发布
[B]执行EXPDP操作时出现ORA-29283: invalid file operation错误
SQL> create or replace directory DUMPDIR
2as '/home/oracle/testdump/';
Directory created.
$ cat test.sh
date
expdp test/test@tstdb dumpfile=test_onetable.dmp directory=dumpdir tables=table1 logfile=n job_name=exptab parallel=4
date
$
$ . /home/oracle/test.sh
Fri Nov 10 11:20:35 EAT 2006
Export: Release 10.2.0.1.0 - 64bit Production on Friday, 10 November, 2006 11:20:35
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.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
Fri Nov 10 11:20:43 EAT 2006
在网上搜了半天,还在itpub上发了贴,半天都没有找到解决办法,只好决定自己再次
详细检查一下,结果发现是如下原因所致:
SQL> create or replace directory DUMPDIR
2as '/home/oracle/testdump/';
Directory created.
SQL> host ls /home/oracle/testdump
/home/oracle/testdump not found
创建文件夹/home/oracle/testdump 后,如上test.sh可以正确运行:
$ mkdir testdump
$ . /home/oracle/test.sh
Fri Nov 10 15:06:47 EAT 2006
Export: Release 10.2.0.1.0 - 64bit Production on Friday, 10 November, 2006 15:06:47
Copyright (c) 2003, 2005, Oracle.All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
Starting "test"."EXPTAB":test/********@iomtstdb dumpfile=ittest_onetable.dmp directory=dumpdir tables=product_attr_i_p_l logfile=test.log job_name=exptab parallel=4
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 80 MB
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/COMMENT
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "test"."PRODUCT_ATTR_I_P_L"
66.67 MB 1937788 rows
Master table "test"."EXPTAB" successfully loaded/unloaded
******************************************************************************
Dump file set for test.EXPTAB is:
/home/oracle/testdump/ittest_onetable.dmp
Job "test"."EXPTAB" successfully completed at 15:07:19
Fri Nov 10 15:07:22 EAT 2006
$
删除文件夹/home/oracle/testdump 后,运行test.sh错误重现:
$ rmdir testdump
$ ls testdump
testdump not found
$ . /home/oracle/test.sh
Fri Nov 10 14:59:00 EAT 2006
Export: Release 10.2.0.1.0 - 64bit Production on Friday, 10 November, 2006 14:59:00
Copyright (c) 2003, 2005, Oracle.All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.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
可见,在sqlplus中创建DIRECTORY时,oracle并不检查引用的操作系统文件夹是否已经
存在,应该仔细检查。 [/B]
可以理解为那只是在sqlplus里创建一个变量,并为它赋值而已.至于那个值是否合理,它不会帮你去检查.
|