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
------ -------------------- ------------------------------
SYSDPUMP_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.小结
从该问题的处理过程中我们可以看到,在报错信息不实很明显的时候我们往往手足无措。越是在这样的场景,我们越应该沉着冷静,从整个 *** 作的源头一步一步的去排查,终有柳暗花明之时。
文件位置不需要指出,impdp程序会自动去之前创建的directory中查找impdp命令中指定的文件名是否存在。所以,命令中的file=d:\sf1.dmp改成file=sf1.dmp试试。
expdp test/test directory=BBS_DIR file=data.dmp schemas=TEST
这是导出,解释一下参数,directory是目录对象,用户必须有权限读写。
shemas是导出模式的对象,多个可以逗号隔开。
导入:
impdp test1/test1 directory=bbs_dir file=data.dmp schemas=test1
提示
ORA-39002: *** 作无效
ORA-39165: 未找到方案 TEST1
原因是新模式和原来的模式不同,必须加额外的参数
impdp test1/test1 directory=bbs_dir file=data.dmp REMAP_SCHEMA=TEST:TEST1
扩展资料:
可变长的形参声明格式如下:
dataType...parameters
其中,省略号表示数据类型为dataType的parameters参数个数不固定的,可为任意个。
在方法调用时,变长形式参数可被替换成1个、2个或多个参数。
例如,下面声明可变长参数的方法:
void mymethod(String s , int ...numbers)
其方法的调用形式可为:mymethod("abc",1)、mymethod("abcd",1,2)或mymethod("hij",1,2,3)等形式。
在编译时,方法的变长参数将被看成具有相同类型的一维数组。
注意:变长的参数有一些限制:在一个方法中只能定义一个可变长的参数,且必须是方法的最后一个参数。
参考资料来源:百度百科-参数
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)