远程客户端查询oracle外部表出错:ORA-29913: 执行 ODCIEXTTABLEOPEN 调出时出错

今天通过远程在外网数据上查询外部表:
select count(*) from tb_clct_out;报如下错误:
ORA-29913: 执行 ODCIEXTTABLEOPEN 调出时出错
ORA-29400: 数据插件错误KUP-04040: 未找到文件 20120217225002.dat, 在 DIR_03004 中
登录服务器上查看目录DIR_03004下,确实有这个文件。
考虑到这数据库是两个节点的rac,因此我在之前已经在两台服务器上都建好这个目录,并在这个目录里面放上了相应的文件。
再来查看数据库里面的建的directory的权限,已经分配了read,write权限给这个用户了。
登录oracle服务器上,用sqlplus来查查看:
 
SQL> select count(*) from tb_clct_out;
  COUNT(*)
----------
     21305
在另外一台服务器上也这么执行看看:
SQL> select count(*) from tb_clct_out;
  COUNT(*)
----------
     21305
均可以查出,为何在客户端执行不行呢??
 
查看服务器上,这个目录以及文件在操作系统里面的权限,目录拥有755权限,文件也拥有755权限,这个目录时之间建在oracle的宿主目录/home/oracle/下的,看上去貌似没什么问题。
再来查看/home/目录下的oracle这个目录的权限,/home/oracle的权限却是700,不妨将oracle的权限改改看,改为755试试:
chmod 755 /home/oracle/
 
再在远程客户端sqlplus下执行:
SQL> select count(*) from tb_clct_out;
  COUNT(*)
----------
     21305
还真是这个问题,将另外一个服务器上的相对应的目录也改为755的权限,问题解决。
 
参考文档:
ORA-29913: Error in Executing ODCIEXTTABLEOPEN Callout [ID 458620.1]
 
今天(2012-05-10)又在另外一套rac的outtrack数据库上遇到了同样现象的问题,其中节点1的/home/oracle的权限是755,节点2的/home/oracle的权限是700,通过修节点2上/home/oracle的权限为755,问题解决!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12129601/viewspace-716938/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12129601/viewspace-716938/

你可能感兴趣的:(远程客户端查询oracle外部表出错:ORA-29913: 执行 ODCIEXTTABLEOPEN 调出时出错)